{"id":787,"name":"Climate_Indices","description":"Contains Python implementations of various climate index algorithms which provide a geographical and temporal picture of the severity of precipitation and temperature anomalies useful for climate monitoring and research.","url":"https://github.com/monocongo/climate_indices","last_synced_at":"2026-04-20T05:30:23.709Z","repository":{"id":41355831,"uuid":"94227441","full_name":"monocongo/climate_indices","owner":"monocongo","description":"Climate indices for drought monitoring","archived":false,"fork":false,"pushed_at":"2026-04-11T21:16:43.000Z","size":36498,"stargazers_count":385,"open_issues_count":103,"forks_count":176,"subscribers_count":20,"default_branch":"main","last_synced_at":"2026-04-11T23:21:49.144Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://monocongo.github.io/climate_indices/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/monocongo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2017-06-13T15:21:07.000Z","updated_at":"2026-04-11T11:00:46.000Z","dependencies_parsed_at":"2026-04-04T22:01:24.698Z","dependency_job_id":null,"html_url":"https://github.com/monocongo/climate_indices","commit_stats":{"total_commits":978,"total_committers":19,"mean_commits":"51.473684210526315","dds":"0.33537832310838445","last_synced_commit":"3c503463b91f407cab21c4e3876e7e20d8926399"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/monocongo/climate_indices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/sbom","scorecard":{"id":531225,"data":{"date":"2025-08-11","repo":{"name":"github.com/monocongo/climate_indices","commit":"bd2ddd07711b5494b034fcbe3de0e6b647a9143a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"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":"Code-Review","score":0,"reason":"Found 0/6 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"28 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/unit-tests-workflow.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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 'master'"],"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":"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/unit-tests-workflow.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests-workflow.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests-workflow.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating python:3.11-slim to python:3.11-slim@sha256:9e885f8239c31f8429448f933638dd13037c9119e2a362aeebdd37ec3bee7c85","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage 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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (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-20T05:47:38.845Z","repository_id":41355831,"created_at":"2025-08-20T05:47:38.845Z","updated_at":"2025-08-20T05:47:38.845Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31914458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":"monocongo","name":"James Adams","uuid":"1328158","kind":"user","description":"","email":"","website":"https://www.drought.gov/drought/data-maps-tools/software","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1328158?u=0ab524c4cf2027dd542cb00e6a3344d97ba30738\u0026v=4","repositories_count":75,"last_synced_at":"2024-06-11T15:57:38.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/monocongo","funding_links":[],"total_stars":449,"followers":124,"following":0,"created_at":"2022-11-13T06:53:34.934Z","updated_at":"2024-06-11T15:57:40.951Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo/repositories"},"packages":[{"id":11733255,"name":"github.com/monocongo/climate_indices","ecosystem":"go","description":null,"homepage":null,"licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/monocongo/climate_indices","keywords_array":[],"namespace":null,"versions_count":4,"first_release_published_at":"2018-01-03T03:00:48.000Z","latest_release_published_at":"2026-04-06T09:57:29.000Z","latest_release_number":"v2.4.0+incompatible","last_synced_at":"2026-04-17T04:01:44.870Z","created_at":"2025-06-05T11:15:01.162Z","updated_at":"2026-04-17T04:01:44.871Z","registry_url":"https://pkg.go.dev/github.com/monocongo/climate_indices","install_command":"go get github.com/monocongo/climate_indices","documentation_url":"https://pkg.go.dev/github.com/monocongo/climate_indices#section-documentation","metadata":{},"repo_metadata":{"id":41355831,"uuid":"94227441","full_name":"monocongo/climate_indices","owner":"monocongo","description":"Climate indices for drought monitoring","archived":false,"fork":false,"pushed_at":"2025-08-03T22:13:38.000Z","size":31001,"stargazers_count":378,"open_issues_count":108,"forks_count":173,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-10-10T23:18:26.154Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://monocongo.github.io/climate_indices/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/monocongo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2017-06-13T15:21:07.000Z","updated_at":"2025-10-07T05:46:38.000Z","dependencies_parsed_at":"2024-11-05T23:38:18.517Z","dependency_job_id":"a10e6313-a48c-46db-8f25-e70875ca5186","html_url":"https://github.com/monocongo/climate_indices","commit_stats":{"total_commits":978,"total_committers":19,"mean_commits":"51.473684210526315","dds":"0.33537832310838445","last_synced_commit":"3c503463b91f407cab21c4e3876e7e20d8926399"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/monocongo/climate_indices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/sbom","scorecard":{"id":531225,"data":{"date":"2025-08-11","repo":{"name":"github.com/monocongo/climate_indices","commit":"bd2ddd07711b5494b034fcbe3de0e6b647a9143a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"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":"Code-Review","score":0,"reason":"Found 0/6 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"28 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/unit-tests-workflow.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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 'master'"],"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":"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/unit-tests-workflow.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests-workflow.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests-workflow.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating python:3.11-slim to python:3.11-slim@sha256:9e885f8239c31f8429448f933638dd13037c9119e2a362aeebdd37ec3bee7c85","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage 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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (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-20T05:47:38.845Z","repository_id":41355831,"created_at":"2025-08-20T05:47:38.845Z","updated_at":"2025-08-20T05:47:38.845Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006611,"owners_count":26084148,"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-11T02:00:06.511Z","response_time":55,"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":"monocongo","name":"James Adams","uuid":"1328158","kind":"user","description":"","email":"","website":"https://www.drought.gov/drought/data-maps-tools/software","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1328158?u=0ab524c4cf2027dd542cb00e6a3344d97ba30738\u0026v=4","repositories_count":75,"last_synced_at":"2024-06-11T15:57:38.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/monocongo","funding_links":[],"total_stars":449,"followers":124,"following":0,"created_at":"2022-11-13T06:53:34.934Z","updated_at":"2024-06-11T15:57:40.951Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo/repositories"},"tags":[{"name":"v0.1.0-beta","sha":"96067fbf076e9be933543ff612b86b6956b5b442","kind":"commit","published_at":"2018-05-15T15:40:25.000Z","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/v0.1.0-beta","html_url":"https://github.com/monocongo/climate_indices/releases/tag/v0.1.0-beta","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/monocongo/climate_indices@v0.1.0-beta","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-beta","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-beta/manifests"},{"name":"v0.1.0-alpha","sha":"57a5aadbb7956fad5d4265bff8ca9f5f85082637","kind":"commit","published_at":"2018-01-03T03:00:48.000Z","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/v0.1.0-alpha","html_url":"https://github.com/monocongo/climate_indices/releases/tag/v0.1.0-alpha","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/monocongo/climate_indices@v0.1.0-alpha","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-alpha","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-alpha/manifests"}]},"repo_metadata_updated_at":"2025-10-12T13:27:19.698Z","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/monocongo/climate_indices","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/monocongo/climate_indices","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/monocongo/climate_indices","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/monocongo/climate_indices/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-09-13T00:23:57.817Z","issues_count":322,"pull_requests_count":252,"avg_time_to_close_issue":6629979.855813953,"avg_time_to_close_pull_request":1288954.6341463414,"issues_closed_count":215,"pull_requests_closed_count":246,"pull_request_authors_count":17,"issue_authors_count":110,"avg_comments_per_issue":2.580745341614907,"avg_comments_per_pull_request":0.9404761904761905,"merged_pull_requests_count":224,"bot_issues_count":0,"bot_pull_requests_count":3,"past_year_issues_count":15,"past_year_pull_requests_count":15,"past_year_avg_time_to_close_issue":17643.0,"past_year_avg_time_to_close_pull_request":1420227.1538461538,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":13,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":11,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":1.5333333333333332,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":13,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/issues","maintainers":[{"login":"monocongo","count":380,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/monocongo"}],"active_maintainers":[{"login":"monocongo","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/monocongo"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmonocongo%2Fclimate_indices/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmonocongo%2Fclimate_indices/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmonocongo%2Fclimate_indices/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmonocongo%2Fclimate_indices/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmonocongo%2Fclimate_indices/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2101042,"maintainers_count":0,"namespaces_count":781751,"keywords_count":112812,"github":"golang","metadata":{"funded_packages_count":53481},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-16T05:07:48.212Z","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"}},{"id":11975240,"name":"climate-indices","ecosystem":"pypi","description":"Reference implementations of various climate indices typically used for drought monitoring","homepage":"https://github.com/monocongo/climate_indices","licenses":"BSD-3-Clause License\n        \n        ========================================================================================================================\n        Copyright 2017, James Adams\n        \n        Redistribution and use in source and binary forms, with or without modification, are permitted provided \n        that the following conditions are met:\n        \n        1. Redistributions of source code must retain the above copyright notice, this list of conditions \n        and the following disclaimer.\n        \n        2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions \n        and the following disclaimer in the documentation and/or other materials provided with the distribution.\n        \n        3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse\n        or promote products derived from this software without specific prior written permission.\n        \n        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED \n        WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS \n        FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE \n        LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \n        BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n        INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \n        (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED \n        OF THE POSSIBILITY OF SUCH DAMAGE.\n        \n        ========================================================================================================================\n        ========================================================================================================================\n        Previous Public Domain License (from code originally downloaded from drought.gov):\n        \n        ========================================================================================================================\n        NOAA's National Centers for Environmental Information \n        NOAA/NESDIS/NCEI \n        151 Patton Ave, Asheville, NC 28801 \n        \n        THIS SOFTWARE AND ITS DOCUMENTATION ARE CONSIDERED TO BE IN THE PUBLIC DOMAIN AND THUS ARE AVAILABLE \n        FOR UNRESTRICTED PUBLIC USE.\n        \n        THEY ARE FURNISHED \"AS IS.\" THE AUTHORS, THE UNITED STATES GOVERNMENT, ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, \n        AND AGENTS MAKE NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE SOFTWARE AND DOCUMENTATION FOR ANY PURPOSE.\n        THEY ASSUME NO RESPONSIBILITY (1) FOR THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO PROVIDE TECHNICAL SUPPORT \n        TO USERS.","normalized_licenses":["Other"],"repository_url":"https://github.com/monocongo/climate_indices","keywords_array":["PET","SPEI","SPI","climate","drought","evapotranspiration","meteorology","precipitation"],"namespace":null,"versions_count":17,"first_release_published_at":"2018-09-09T19:24:14.000Z","latest_release_published_at":"2026-04-06T15:10:06.000Z","latest_release_number":"2.4.0","last_synced_at":"2026-04-17T04:01:45.413Z","created_at":"2025-08-03T22:00:40.972Z","updated_at":"2026-04-17T04:07:19.278Z","registry_url":"https://pypi.org/project/climate-indices/","install_command":"pip install climate-indices --index-url https://pypi.org/simple","documentation_url":"https://climate-indices.readthedocs.io/en/latest/","metadata":{"funding":null,"documentation":"https://climate-indices.readthedocs.io/en/latest/","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Education","Intended Audience :: Science/Research","License :: OSI Approved :: BSD License","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Topic :: Scientific/Engineering :: Atmospheric Science","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"climate-indices","project_status":null},"repo_metadata":{"id":41355831,"uuid":"94227441","full_name":"monocongo/climate_indices","owner":"monocongo","description":"Climate indices for drought monitoring","archived":false,"fork":false,"pushed_at":"2026-04-11T21:16:43.000Z","size":36498,"stargazers_count":385,"open_issues_count":103,"forks_count":176,"subscribers_count":20,"default_branch":"main","last_synced_at":"2026-04-11T23:21:49.144Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://monocongo.github.io/climate_indices/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/monocongo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2017-06-13T15:21:07.000Z","updated_at":"2026-04-11T11:00:46.000Z","dependencies_parsed_at":"2026-04-04T22:01:24.698Z","dependency_job_id":null,"html_url":"https://github.com/monocongo/climate_indices","commit_stats":{"total_commits":978,"total_committers":19,"mean_commits":"51.473684210526315","dds":"0.33537832310838445","last_synced_commit":"3c503463b91f407cab21c4e3876e7e20d8926399"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/monocongo/climate_indices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/sbom","scorecard":{"id":531225,"data":{"date":"2025-08-11","repo":{"name":"github.com/monocongo/climate_indices","commit":"bd2ddd07711b5494b034fcbe3de0e6b647a9143a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"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":"Code-Review","score":0,"reason":"Found 0/6 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"28 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/unit-tests-workflow.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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 'master'"],"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":"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/unit-tests-workflow.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests-workflow.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit-tests-workflow.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/monocongo/climate_indices/unit-tests-workflow.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating python:3.11-slim to python:3.11-slim@sha256:9e885f8239c31f8429448f933638dd13037c9119e2a362aeebdd37ec3bee7c85","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage 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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (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-20T05:47:38.845Z","repository_id":41355831,"created_at":"2025-08-20T05:47:38.845Z","updated_at":"2025-08-20T05:47:38.845Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31914458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":"monocongo","name":"James Adams","uuid":"1328158","kind":"user","description":"","email":"","website":"https://www.drought.gov/drought/data-maps-tools/software","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1328158?u=0ab524c4cf2027dd542cb00e6a3344d97ba30738\u0026v=4","repositories_count":75,"last_synced_at":"2024-06-11T15:57:38.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/monocongo","funding_links":[],"total_stars":449,"followers":124,"following":0,"created_at":"2022-11-13T06:53:34.934Z","updated_at":"2024-06-11T15:57:40.951Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monocongo/repositories"},"tags":[{"name":"v2.4.0","sha":"d4ed0fc28334da662d43599cc019e99353686881","kind":"commit","published_at":"2026-04-06T09:57:29.000Z","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/v2.4.0","html_url":"https://github.com/monocongo/climate_indices/releases/tag/v2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/monocongo/climate_indices@v2.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v2.4.0/manifests"},{"name":"v2.3.0","sha":"25fe7ad5fbd50c2fbf7d87d7a6c48d2d5aaadb3e","kind":"tag","published_at":"2026-02-12T01:58:52.000Z","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/v2.3.0","html_url":"https://github.com/monocongo/climate_indices/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/monocongo/climate_indices@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v2.3.0/manifests"},{"name":"v0.1.0-beta","sha":"96067fbf076e9be933543ff612b86b6956b5b442","kind":"commit","published_at":"2018-05-15T15:40:25.000Z","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/v0.1.0-beta","html_url":"https://github.com/monocongo/climate_indices/releases/tag/v0.1.0-beta","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/monocongo/climate_indices@v0.1.0-beta","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-beta","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-beta/manifests"},{"name":"v0.1.0-alpha","sha":"57a5aadbb7956fad5d4265bff8ca9f5f85082637","kind":"commit","published_at":"2018-01-03T03:00:48.000Z","download_url":"https://codeload.github.com/monocongo/climate_indices/tar.gz/v0.1.0-alpha","html_url":"https://github.com/monocongo/climate_indices/releases/tag/v0.1.0-alpha","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/monocongo/climate_indices@v0.1.0-alpha","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-alpha","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/tags/v0.1.0-alpha/manifests"}]},"repo_metadata_updated_at":"2026-04-17T04:07:19.278Z","dependent_packages_count":0,"downloads":2349,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":49.248760560139836,"dependent_packages_count":8.739629248255525,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":28.99419490419768},"purl":"pkg:pypi/climate-indices","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/climate-indices","docker_dependents_count":1,"docker_downloads_count":100,"usage_url":"https://repos.ecosyste.ms/usage/pypi/climate-indices","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/climate-indices/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-15T03:01:11.761Z","issues_count":325,"pull_requests_count":264,"avg_time_to_close_issue":6599297.759259259,"avg_time_to_close_pull_request":1277429.3373493976,"issues_closed_count":216,"pull_requests_closed_count":249,"pull_request_authors_count":17,"issue_authors_count":111,"avg_comments_per_issue":2.5876923076923077,"avg_comments_per_pull_request":0.9886363636363636,"merged_pull_requests_count":226,"bot_issues_count":0,"bot_pull_requests_count":10,"past_year_issues_count":10,"past_year_pull_requests_count":15,"past_year_avg_time_to_close_issue":2647.0,"past_year_avg_time_to_close_pull_request":200050.8,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":5,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.8,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":7,"past_year_merged_pull_requests_count":4,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/issues","maintainers":[{"login":"monocongo","count":387,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/monocongo"}],"active_maintainers":[{"login":"monocongo","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/monocongo"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/climate-indices/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/climate-indices/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/climate-indices/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/climate-indices/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/climate-indices/codemeta","maintainers":[{"uuid":"monocongo","login":"monocongo","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://pypi.org/user/monocongo/","role":"Owner","created_at":"2025-08-03T22:30:40.754Z","updated_at":"2025-08-03T22:30:40.754Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/monocongo/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":844153,"maintainers_count":360677,"namespaces_count":0,"keywords_count":271316,"github":"pypi","metadata":{"funded_packages_count":53172},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-09T05:08:03.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":549537,"full_name":"monocongo/climate_indices","default_branch":"master","total_commits":1175,"total_committers":20,"total_bot_commits":14,"total_bot_committers":2,"mean_commits":58.75,"dds":0.308936170212766,"past_year_total_commits":195,"past_year_total_committers":3,"past_year_total_bot_commits":10,"past_year_total_bot_committers":1,"past_year_mean_commits":65.0,"past_year_dds":0.16923076923076918,"last_synced_at":"2026-04-17T00:40:54.770Z","last_synced_commit":"6b061543fd1f14d8eb1bc69e52baca9d1a370e57","created_at":"2023-03-09T04:35:05.144Z","updated_at":"2026-04-17T00:38:46.577Z","committers":[{"name":"James Adams","email":"monocongo@gmail.com","login":"monocongo","count":812},{"name":"James.Adams","email":"James.Adams@CD0004059809.nesdis.noaa.local","login":null,"count":213},{"name":"james.adams","email":"james.adams@opensignal.com","login":null,"count":60},{"name":"james.a","email":"james.a@claraanalytics.com","login":null,"count":25},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":13},{"name":"James Adams","email":"james.adams@verisk.com","login":null,"count":11},{"name":"Benjamin Root","email":"ben.v.root@gmail.com","login":"WeatherGod","count":10},{"name":"Arnab Paul Choudhury","email":"arnabpc.oshin94@gmail.com","login":"oshin94","count":9},{"name":"Nathan Nayda","email":"ntnayda@secondpillar.com","login":"nnayda","count":6},{"name":"kikocorreoso","email":"kikocorreoso@gmail.com","login":null,"count":4},{"name":"AGericke","email":"gericke@igb-berlin","login":null,"count":3},{"name":"Ben Lewis","email":"benjimin","login":"benjimin","count":1},{"name":"David de Klerk","email":"david.deklerk@ed.ac.uk","login":"dawiedotcom","count":1},{"name":"DeepSource Bot","email":"bot@deepsource.io","login":"deepsourcebot","count":1},{"name":"haysengithub","email":"dduguye@gmail.com","login":null,"count":1},{"name":"Scott Wales","email":"scott.wales@unimelb.edu.au","login":null,"count":1},{"name":"Laura Guillory","email":"laura.a.guillory@gmail.com","login":"Laura-Guillory","count":1},{"name":"deepsource-autofix[bot]","email":"62050782+deepsource-autofix[bot]","login":"deepsource-autofix[bot]","count":1},{"name":"kikocorreoso","email":"you@example.com","login":"invalid-email-address","count":1},{"name":"snyk-bot","email":"snyk-bot@snyk.io","login":"snyk-bot","count":1}],"past_year_committers":[{"name":"James Adams","email":"monocongo@gmail.com","login":"monocongo","count":162},{"name":"james.a","email":"james.a@claraanalytics.com","login":null,"count":23},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":10}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.908Z","repositories_count":6214294,"commits_count":900016267,"contributors_count":34915726,"owners_count":1143573,"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":"monocongo/climate_indices","html_url":"https://github.com/monocongo/climate_indices","last_synced_at":"2026-04-17T04:01:12.230Z","status":"active","issues_count":325,"pull_requests_count":267,"avg_time_to_close_issue":6599297.759259259,"avg_time_to_close_pull_request":1253381.4881889764,"issues_closed_count":216,"pull_requests_closed_count":254,"pull_request_authors_count":17,"issue_authors_count":111,"avg_comments_per_issue":2.5876923076923077,"avg_comments_per_pull_request":1.0299625468164795,"merged_pull_requests_count":229,"bot_issues_count":0,"bot_pull_requests_count":10,"past_year_issues_count":9,"past_year_pull_requests_count":18,"past_year_avg_time_to_close_issue":2647.0,"past_year_avg_time_to_close_pull_request":127924.7,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":10,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":1.1111111111111112,"past_year_avg_comments_per_pull_request":2.2777777777777777,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":7,"past_year_merged_pull_requests_count":7,"created_at":"2023-05-09T10:36:02.080Z","updated_at":"2026-04-17T04:01:12.231Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/monocongo%2Fclimate_indices/issues","issue_labels_count":{"enhancement":28,"help wanted":19,"bug":11,"question":3,"documentation":2},"pull_request_labels_count":{"dependencies":11,"python:uv":7,"enhancement":1},"issue_author_associations_count":{"OWNER":166,"NONE":146,"CONTRIBUTOR":13},"pull_request_author_associations_count":{"OWNER":224,"CONTRIBUTOR":30,"NONE":13},"issue_authors":{"monocongo":166,"crestedcaracaryn":6,"kikocorreoso":5,"bennyistanto":5,"WeatherGod":5,"aleccourt":4,"SouhailAB":4,"s-m-t-c":3,"itati01":3,"wsor330":3,"Lixia0911":3,"tommylees112":3,"helena434":2,"yheng0821":2,"fipoucat":2,"jamaa":2,"Laura-Guillory":2,"cshields143":2,"xeimyname1":2,"Amarounek":2,"lukruh":2,"ValescaFernandes":2,"khider":2,"GiuliaIsNotAvailable":2,"Yunlei-Wu":2,"Aud3":2,"farheen2022":2,"wewe-sst":2,"nurkapan":1,"Queeno11":1,"fmoraess":1,"TreeGuo":1,"sthamanea":1,"greenfrog203":1,"tarmangue":1,"coderkhaleesi":1,"zbc123a":1,"dougrichardson":1,"ritviksahajpal":1,"GvdDool":1,"abhilashsinghimd":1,"aniyou1":1,"andiefajardo":1,"mjh1366":1,"Shehabcad":1,"AnnMt":1,"mvdebolskiy":1,"HEXU-123":1,"kurkutesa":1,"njdepsky":1,"RR-Torres":1,"DamienIrving":1,"oshin94":1,"meerfrau":1,"iajzenszmi":1,"lexming":1,"NickleDave":1,"Yassminaa":1,"gszs06":1,"dgoldwx2112":1,"NILICK":1,"SaumikMallik":1,"ameliafdezrodriguez":1,"david-e-rupp":1,"meklit-y":1,"heroldn":1,"mada0007":1,"Climatezhou":1,"pankajkarman":1,"samburu":1,"aidenrobert":1,"Nazira5":1,"matteodefelice":1,"rabons":1,"mabelcalim":1,"sumi137":1,"Linimie":1,"usmansall":1,"hsjok":1,"mmaoyi":1,"richpsharp":1,"derrickburt":1,"EliT1626":1,"jalder-usgs":1,"levisocool":1,"minxu74":1,"alperdincer":1,"xzhangatnuist":1,"qylxiao":1,"DnyaneshWarade":1,"svish91":1,"Seven-milk":1,"DancingChild":1,"lincystar":1,"JustinTrvz":1,"vuminhtue":1,"ben29med":1,"ghost":1,"Daafip":1,"jeremietellus":1,"pratyushags":1,"Izzylzy":1,"zhaod95":1,"rb4844":1,"Romaysa":1,"chrisbanze":1,"tugce-b":1,"1073766230":1,"PawanIndia87":1,"Okeyode22":1,"JulianGiles":1},"pull_request_authors":{"monocongo":224,"WeatherGod":10,"dependabot[bot]":10,"Seven-milk":7,"kikocorreoso":3,"nnayda":2,"go1me":1,"oshin94":1,"cshields143":1,"dawiedotcom":1,"ScottWales":1,"Emmadd":1,"itati01":1,"Daafip":1,"Laura-Guillory":1,"benjimin":1,"synflyn28":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.985Z","repositories_count":14321702,"issues_count":34523785,"pull_requests_count":112949429,"authors_count":11238302,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"dependencies":7,"python:uv":7},"past_year_issue_author_associations_count":{"NONE":4,"OWNER":4,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"OWNER":11,"CONTRIBUTOR":7},"past_year_issue_authors":{"monocongo":4,"ameliafdezrodriguez":1,"aniyou1":1,"meklit-y":1,"WeatherGod":1,"xzhangatnuist":1},"past_year_pull_request_authors":{"monocongo":11,"dependabot[bot]":7},"maintainers":[{"login":"monocongo","count":390,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/monocongo"}],"active_maintainers":[{"login":"monocongo","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/monocongo"}]},"events":{"total":{"DeleteEvent":14,"PullRequestEvent":37,"ForkEvent":11,"IssuesEvent":17,"WatchEvent":36,"IssueCommentEvent":70,"PushEvent":83,"PullRequestReviewCommentEvent":10,"PullRequestReviewEvent":9,"CreateEvent":27},"last_year":{"DeleteEvent":14,"PullRequestEvent":36,"ForkEvent":5,"IssuesEvent":6,"WatchEvent":16,"IssueCommentEvent":51,"PushEvent":82,"PullRequestReviewEvent":8,"PullRequestReviewCommentEvent":10,"CreateEvent":26}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"uv.lock","sha":null,"kind":"lockfile","created_at":"2026-04-04T22:01:02.362Z","updated_at":"2026-04-04T22:01:02.362Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/uv.lock","dependencies":[{"id":25853949942,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":25853949997,"package_name":"colorama","ecosystem":"pypi","requirements":"0.4.6","direct":false,"kind":"runtime","optional":false},{"id":25853949998,"package_name":"comm","ecosystem":"pypi","requirements":"0.2.3","direct":false,"kind":"runtime","optional":false},{"id":25853949999,"package_name":"contourpy","ecosystem":"pypi","requirements":"1.3.2","direct":false,"kind":"runtime","optional":false},{"id":25853949379,"package_name":"alabaster","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853949381,"package_name":"anyio","ecosystem":"pypi","requirements":"4.12.1","direct":false,"kind":"runtime","optional":false},{"id":25853949382,"package_name":"appnope","ecosystem":"pypi","requirements":"0.1.4","direct":false,"kind":"runtime","optional":false},{"id":25853949383,"package_name":"argon2-cffi","ecosystem":"pypi","requirements":"25.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853949384,"package_name":"argon2-cffi-bindings","ecosystem":"pypi","requirements":"25.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853949427,"package_name":"arrow","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853949428,"package_name":"asttokens","ecosystem":"pypi","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":25853949429,"package_name":"async-lru","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853949456,"package_name":"attrs","ecosystem":"pypi","requirements":"25.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853949457,"package_name":"babel","ecosystem":"pypi","requirements":"2.18.0","direct":false,"kind":"runtime","optional":false},{"id":25853949458,"package_name":"backports-tarfile","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853949593,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"4.14.3","direct":false,"kind":"runtime","optional":false},{"id":25853949623,"package_name":"bleach","ecosystem":"pypi","requirements":"6.3.0","direct":false,"kind":"runtime","optional":false},{"id":25853949624,"package_name":"boolean-py","ecosystem":"pypi","requirements":"5.0","direct":false,"kind":"runtime","optional":false},{"id":25853949625,"package_name":"build","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853949626,"package_name":"cachecontrol","ecosystem":"pypi","requirements":"0.14.4","direct":false,"kind":"runtime","optional":false},{"id":25853949627,"package_name":"cartopy","ecosystem":"pypi","requirements":"0.25.0","direct":false,"kind":"runtime","optional":false},{"id":25853949862,"package_name":"certifi","ecosystem":"pypi","requirements":"2026.1.4","direct":false,"kind":"runtime","optional":false},{"id":25853949863,"package_name":"cffi","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853949864,"package_name":"cftime","ecosystem":"pypi","requirements":"1.6.5","direct":false,"kind":"runtime","optional":false},{"id":25853949885,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"3.4.4","direct":false,"kind":"runtime","optional":false},{"id":25853949886,"package_name":"click","ecosystem":"pypi","requirements":"8.3.1","direct":false,"kind":"runtime","optional":false},{"id":25853949887,"package_name":"climate-indices","ecosystem":"pypi","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853950032,"package_name":"contourpy","ecosystem":"pypi","requirements":"1.3.3","direct":false,"kind":"runtime","optional":false},{"id":25853950042,"package_name":"coverage","ecosystem":"pypi","requirements":"7.13.4","direct":false,"kind":"runtime","optional":false},{"id":25853950045,"package_name":"cryptography","ecosystem":"pypi","requirements":"46.0.5","direct":false,"kind":"runtime","optional":false},{"id":25853950052,"package_name":"cycler","ecosystem":"pypi","requirements":"0.12.1","direct":false,"kind":"runtime","optional":false},{"id":25853950056,"package_name":"cyclonedx-python-lib","ecosystem":"pypi","requirements":"11.6.0","direct":false,"kind":"runtime","optional":false},{"id":25853950096,"package_name":"dask","ecosystem":"pypi","requirements":"2026.1.2","direct":false,"kind":"runtime","optional":false},{"id":25853950471,"package_name":"defusedxml","ecosystem":"pypi","requirements":"0.7.1","direct":false,"kind":"runtime","optional":false},{"id":25853950472,"package_name":"docutils","ecosystem":"pypi","requirements":"0.21.2","direct":false,"kind":"runtime","optional":false},{"id":25853950473,"package_name":"docutils","ecosystem":"pypi","requirements":"0.22.4","direct":false,"kind":"runtime","optional":false},{"id":25853950474,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":25853950475,"package_name":"executing","ecosystem":"pypi","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":25853950476,"package_name":"fastjsonschema","ecosystem":"pypi","requirements":"2.21.2","direct":false,"kind":"runtime","optional":false},{"id":25853950477,"package_name":"filelock","ecosystem":"pypi","requirements":"3.20.3","direct":false,"kind":"runtime","optional":false},{"id":25853950478,"package_name":"fonttools","ecosystem":"pypi","requirements":"4.61.1","direct":false,"kind":"runtime","optional":false},{"id":25853950483,"package_name":"fqdn","ecosystem":"pypi","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":25853950484,"package_name":"fsspec","ecosystem":"pypi","requirements":"2026.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853950485,"package_name":"h11","ecosystem":"pypi","requirements":"0.16.0","direct":false,"kind":"runtime","optional":false},{"id":25853950486,"package_name":"h5netcdf","ecosystem":"pypi","requirements":"1.8.1","direct":false,"kind":"runtime","optional":false},{"id":25853950530,"package_name":"httpcore","ecosystem":"pypi","requirements":"1.0.9","direct":false,"kind":"runtime","optional":false},{"id":25853950531,"package_name":"httpx","ecosystem":"pypi","requirements":"0.28.1","direct":false,"kind":"runtime","optional":false},{"id":25853950532,"package_name":"hypothesis","ecosystem":"pypi","requirements":"6.151.6","direct":false,"kind":"runtime","optional":false},{"id":25853950547,"package_name":"id","ecosystem":"pypi","requirements":"1.6.1","direct":false,"kind":"runtime","optional":false},{"id":25853950604,"package_name":"idna","ecosystem":"pypi","requirements":"3.11","direct":false,"kind":"runtime","optional":false},{"id":25853950605,"package_name":"imagesize","ecosystem":"pypi","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":25853950612,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"8.7.1","direct":false,"kind":"runtime","optional":false},{"id":25853950645,"package_name":"iniconfig","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":25853950646,"package_name":"ipykernel","ecosystem":"pypi","requirements":"7.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853950647,"package_name":"ipython","ecosystem":"pypi","requirements":"8.38.0","direct":false,"kind":"runtime","optional":false},{"id":25853950652,"package_name":"ipython","ecosystem":"pypi","requirements":"9.10.0","direct":false,"kind":"runtime","optional":false},{"id":25853950653,"package_name":"ipython-pygments-lexers","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":25853950654,"package_name":"ipywidgets","ecosystem":"pypi","requirements":"8.1.8","direct":false,"kind":"runtime","optional":false},{"id":25853950685,"package_name":"isoduration","ecosystem":"pypi","requirements":"20.11.0","direct":false,"kind":"runtime","optional":false},{"id":25853950686,"package_name":"jaraco-classes","ecosystem":"pypi","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853950694,"package_name":"jaraco-context","ecosystem":"pypi","requirements":"6.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853950700,"package_name":"jaraco-functools","ecosystem":"pypi","requirements":"4.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853950725,"package_name":"jedi","ecosystem":"pypi","requirements":"0.19.2","direct":false,"kind":"runtime","optional":false},{"id":25853950764,"package_name":"jeepney","ecosystem":"pypi","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":25853950807,"package_name":"jinja2","ecosystem":"pypi","requirements":"3.1.6","direct":false,"kind":"runtime","optional":false},{"id":25853950808,"package_name":"json5","ecosystem":"pypi","requirements":"0.13.0","direct":false,"kind":"runtime","optional":false},{"id":25853950809,"package_name":"jsonpointer","ecosystem":"pypi","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853950810,"package_name":"jsonschema","ecosystem":"pypi","requirements":"4.26.0","direct":false,"kind":"runtime","optional":false},{"id":25853950811,"package_name":"jsonschema-specifications","ecosystem":"pypi","requirements":"2025.9.1","direct":false,"kind":"runtime","optional":false},{"id":25853950812,"package_name":"jupyter","ecosystem":"pypi","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":25853950855,"package_name":"jupyter-client","ecosystem":"pypi","requirements":"8.8.0","direct":false,"kind":"runtime","optional":false},{"id":25853950944,"package_name":"jupyter-console","ecosystem":"pypi","requirements":"6.6.3","direct":false,"kind":"runtime","optional":false},{"id":25853950984,"package_name":"jupyter-core","ecosystem":"pypi","requirements":"5.9.1","direct":false,"kind":"runtime","optional":false},{"id":25853951007,"package_name":"jupyter-events","ecosystem":"pypi","requirements":"0.12.0","direct":false,"kind":"runtime","optional":false},{"id":25853951008,"package_name":"jupyter-lsp","ecosystem":"pypi","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":25853951009,"package_name":"jupyter-server","ecosystem":"pypi","requirements":"2.17.0","direct":false,"kind":"runtime","optional":false},{"id":25853951010,"package_name":"jupyter-server-terminals","ecosystem":"pypi","requirements":"0.5.4","direct":false,"kind":"runtime","optional":false},{"id":25853951011,"package_name":"jupyterlab","ecosystem":"pypi","requirements":"4.5.4","direct":false,"kind":"runtime","optional":false},{"id":25853951012,"package_name":"jupyterlab-pygments","ecosystem":"pypi","requirements":"0.3.0","direct":false,"kind":"runtime","optional":false},{"id":25853951013,"package_name":"jupyterlab-server","ecosystem":"pypi","requirements":"2.28.0","direct":false,"kind":"runtime","optional":false},{"id":25853951014,"package_name":"jupyterlab-widgets","ecosystem":"pypi","requirements":"3.0.16","direct":false,"kind":"runtime","optional":false},{"id":25853951039,"package_name":"keyring","ecosystem":"pypi","requirements":"25.7.0","direct":false,"kind":"runtime","optional":false},{"id":25853951044,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"1.4.9","direct":false,"kind":"runtime","optional":false},{"id":25853951048,"package_name":"lark","ecosystem":"pypi","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":25853951049,"package_name":"librt","ecosystem":"pypi","requirements":"0.7.8","direct":false,"kind":"runtime","optional":false},{"id":25853951050,"package_name":"license-expression","ecosystem":"pypi","requirements":"30.4.4","direct":false,"kind":"runtime","optional":false},{"id":25853951051,"package_name":"locket","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853950266,"package_name":"debugpy","ecosystem":"pypi","requirements":"1.8.20","direct":false,"kind":"runtime","optional":false},{"id":25853950421,"package_name":"decorator","ecosystem":"pypi","requirements":"5.2.1","direct":false,"kind":"runtime","optional":false},{"id":25853951205,"package_name":"markdown-it-py","ecosystem":"pypi","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951206,"package_name":"markupsafe","ecosystem":"pypi","requirements":"3.0.3","direct":false,"kind":"runtime","optional":false},{"id":25853951207,"package_name":"matplotlib","ecosystem":"pypi","requirements":"3.10.8","direct":false,"kind":"runtime","optional":false},{"id":25853951220,"package_name":"matplotlib-inline","ecosystem":"pypi","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":25853951223,"package_name":"mdurl","ecosystem":"pypi","requirements":"0.1.2","direct":false,"kind":"runtime","optional":false},{"id":25853951224,"package_name":"mistune","ecosystem":"pypi","requirements":"3.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853951247,"package_name":"more-itertools","ecosystem":"pypi","requirements":"10.8.0","direct":false,"kind":"runtime","optional":false},{"id":25853951269,"package_name":"msgpack","ecosystem":"pypi","requirements":"1.1.2","direct":false,"kind":"runtime","optional":false},{"id":25853951520,"package_name":"pure-eval","ecosystem":"pypi","requirements":"0.2.3","direct":false,"kind":"runtime","optional":false},{"id":25853951521,"package_name":"py-cpuinfo","ecosystem":"pypi","requirements":"9.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951277,"package_name":"mypy","ecosystem":"pypi","requirements":"1.19.1","direct":false,"kind":"runtime","optional":false},{"id":25853951291,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853951310,"package_name":"nbclient","ecosystem":"pypi","requirements":"0.10.4","direct":false,"kind":"runtime","optional":false},{"id":25853951311,"package_name":"nbconvert","ecosystem":"pypi","requirements":"7.17.0","direct":false,"kind":"runtime","optional":false},{"id":25853951325,"package_name":"nbformat","ecosystem":"pypi","requirements":"5.10.4","direct":false,"kind":"runtime","optional":false},{"id":25853951326,"package_name":"nest-asyncio","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":25853951327,"package_name":"nh3","ecosystem":"pypi","requirements":"0.3.2","direct":false,"kind":"runtime","optional":false},{"id":25853951338,"package_name":"notebook","ecosystem":"pypi","requirements":"7.5.3","direct":false,"kind":"runtime","optional":false},{"id":25853951354,"package_name":"notebook-shim","ecosystem":"pypi","requirements":"0.2.4","direct":false,"kind":"runtime","optional":false},{"id":25853951355,"package_name":"numpy","ecosystem":"pypi","requirements":"2.2.6","direct":false,"kind":"runtime","optional":false},{"id":25853951356,"package_name":"numpy","ecosystem":"pypi","requirements":"2.4.2","direct":false,"kind":"runtime","optional":false},{"id":25853951357,"package_name":"overrides","ecosystem":"pypi","requirements":"7.7.0","direct":false,"kind":"runtime","optional":false},{"id":25853951403,"package_name":"packageurl-python","ecosystem":"pypi","requirements":"0.17.6","direct":false,"kind":"runtime","optional":false},{"id":25853951404,"package_name":"packaging","ecosystem":"pypi","requirements":"26.0","direct":false,"kind":"runtime","optional":false},{"id":25853951405,"package_name":"pandas","ecosystem":"pypi","requirements":"2.3.3","direct":false,"kind":"runtime","optional":false},{"id":25853951406,"package_name":"pandas","ecosystem":"pypi","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951407,"package_name":"pandocfilters","ecosystem":"pypi","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":25853951429,"package_name":"parso","ecosystem":"pypi","requirements":"0.8.6","direct":false,"kind":"runtime","optional":false},{"id":25853951430,"package_name":"partd","ecosystem":"pypi","requirements":"1.4.2","direct":false,"kind":"runtime","optional":false},{"id":25853951481,"package_name":"pathspec","ecosystem":"pypi","requirements":"1.0.4","direct":false,"kind":"runtime","optional":false},{"id":25853951482,"package_name":"pexpect","ecosystem":"pypi","requirements":"4.9.0","direct":false,"kind":"runtime","optional":false},{"id":25853951483,"package_name":"pillow","ecosystem":"pypi","requirements":"12.1.1","direct":false,"kind":"runtime","optional":false},{"id":25853951484,"package_name":"pip","ecosystem":"pypi","requirements":"26.0.1","direct":false,"kind":"runtime","optional":false},{"id":25853951485,"package_name":"pip-api","ecosystem":"pypi","requirements":"0.0.34","direct":false,"kind":"runtime","optional":false},{"id":25853951486,"package_name":"pip-audit","ecosystem":"pypi","requirements":"2.10.0","direct":false,"kind":"runtime","optional":false},{"id":25853951487,"package_name":"pip-requirements-parser","ecosystem":"pypi","requirements":"32.0.1","direct":false,"kind":"runtime","optional":false},{"id":25853951488,"package_name":"platformdirs","ecosystem":"pypi","requirements":"4.5.1","direct":false,"kind":"runtime","optional":false},{"id":25853951489,"package_name":"pluggy","ecosystem":"pypi","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":25853951490,"package_name":"prometheus-client","ecosystem":"pypi","requirements":"0.24.1","direct":false,"kind":"runtime","optional":false},{"id":25853951491,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"3.0.52","direct":false,"kind":"runtime","optional":false},{"id":25853951492,"package_name":"psutil","ecosystem":"pypi","requirements":"7.2.2","direct":false,"kind":"runtime","optional":false},{"id":25853951493,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":25853951537,"package_name":"py-serializable","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853951538,"package_name":"pycparser","ecosystem":"pypi","requirements":"3.0","direct":false,"kind":"runtime","optional":false},{"id":25853951543,"package_name":"pygments","ecosystem":"pypi","requirements":"2.19.2","direct":false,"kind":"runtime","optional":false},{"id":25853951550,"package_name":"pyparsing","ecosystem":"pypi","requirements":"3.3.2","direct":false,"kind":"runtime","optional":false},{"id":25853951554,"package_name":"pyproj","ecosystem":"pypi","requirements":"3.7.1","direct":false,"kind":"runtime","optional":false},{"id":25853951563,"package_name":"pyproj","ecosystem":"pypi","requirements":"3.7.2","direct":false,"kind":"runtime","optional":false},{"id":25853951564,"package_name":"pyproject-hooks","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853951565,"package_name":"pyshp","ecosystem":"pypi","requirements":"3.0.3","direct":false,"kind":"runtime","optional":false},{"id":25853951567,"package_name":"pytest","ecosystem":"pypi","requirements":"9.0.2","direct":false,"kind":"runtime","optional":false},{"id":25853951568,"package_name":"pytest-benchmark","ecosystem":"pypi","requirements":"5.2.3","direct":false,"kind":"runtime","optional":false},{"id":25853951569,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"7.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951570,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"2.9.0.post0","direct":false,"kind":"runtime","optional":false},{"id":25853951571,"package_name":"python-json-logger","ecosystem":"pypi","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951588,"package_name":"pytz","ecosystem":"pypi","requirements":"2025.2","direct":false,"kind":"runtime","optional":false},{"id":25853951606,"package_name":"pywin32-ctypes","ecosystem":"pypi","requirements":"0.2.3","direct":false,"kind":"runtime","optional":false},{"id":25853951607,"package_name":"pywinpty","ecosystem":"pypi","requirements":"3.0.3","direct":false,"kind":"runtime","optional":false},{"id":25853951608,"package_name":"pyyaml","ecosystem":"pypi","requirements":"6.0.3","direct":false,"kind":"runtime","optional":false},{"id":25853951609,"package_name":"pyzmq","ecosystem":"pypi","requirements":"27.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853951612,"package_name":"readme-renderer","ecosystem":"pypi","requirements":"44.0","direct":false,"kind":"runtime","optional":false},{"id":25853951655,"package_name":"referencing","ecosystem":"pypi","requirements":"0.37.0","direct":false,"kind":"runtime","optional":false},{"id":25853951656,"package_name":"requests","ecosystem":"pypi","requirements":"2.32.5","direct":false,"kind":"runtime","optional":false},{"id":25853951657,"package_name":"requests-toolbelt","ecosystem":"pypi","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951658,"package_name":"rfc3339-validator","ecosystem":"pypi","requirements":"0.1.4","direct":false,"kind":"runtime","optional":false},{"id":25853951659,"package_name":"rfc3986","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853951679,"package_name":"rfc3986-validator","ecosystem":"pypi","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":25853951680,"package_name":"rfc3987-syntax","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853951681,"package_name":"rich","ecosystem":"pypi","requirements":"14.3.2","direct":false,"kind":"runtime","optional":false},{"id":25853951682,"package_name":"roman-numerals","ecosystem":"pypi","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853951745,"package_name":"rpds-py","ecosystem":"pypi","requirements":"0.30.0","direct":false,"kind":"runtime","optional":false},{"id":25853951746,"package_name":"ruff","ecosystem":"pypi","requirements":"0.15.0","direct":false,"kind":"runtime","optional":false},{"id":25853951747,"package_name":"scipy","ecosystem":"pypi","requirements":"1.15.3","direct":false,"kind":"runtime","optional":false},{"id":25853951756,"package_name":"scipy","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":25853951757,"package_name":"secretstorage","ecosystem":"pypi","requirements":"3.5.0","direct":false,"kind":"runtime","optional":false},{"id":25853952016,"package_name":"send2trash","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853952018,"package_name":"setuptools","ecosystem":"pypi","requirements":"82.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853952019,"package_name":"shapely","ecosystem":"pypi","requirements":"2.1.2","direct":false,"kind":"runtime","optional":false},{"id":25853952057,"package_name":"snowballstemmer","ecosystem":"pypi","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":25853952037,"package_name":"six","ecosystem":"pypi","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":25853952070,"package_name":"sortedcontainers","ecosystem":"pypi","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853952071,"package_name":"soupsieve","ecosystem":"pypi","requirements":"2.8.3","direct":false,"kind":"runtime","optional":false},{"id":25853952076,"package_name":"sphinx","ecosystem":"pypi","requirements":"8.1.3","direct":false,"kind":"runtime","optional":false},{"id":25853952077,"package_name":"sphinx","ecosystem":"pypi","requirements":"9.0.4","direct":false,"kind":"runtime","optional":false},{"id":25853952078,"package_name":"sphinx","ecosystem":"pypi","requirements":"9.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853952079,"package_name":"sphinx-autodoc-typehints","ecosystem":"pypi","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":25853952097,"package_name":"sphinx-autodoc-typehints","ecosystem":"pypi","requirements":"3.6.1","direct":false,"kind":"runtime","optional":false},{"id":25853952130,"package_name":"sphinx-autodoc-typehints","ecosystem":"pypi","requirements":"3.6.2","direct":false,"kind":"runtime","optional":false},{"id":25853952131,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"3.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853952180,"package_name":"sphinxcontrib-applehelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853952297,"package_name":"sphinxcontrib-devhelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853952502,"package_name":"sphinxcontrib-htmlhelp","ecosystem":"pypi","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853952512,"package_name":"sphinxcontrib-jquery","ecosystem":"pypi","requirements":"4.1","direct":false,"kind":"runtime","optional":false},{"id":25853952527,"package_name":"sphinxcontrib-jsmath","ecosystem":"pypi","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":25853952590,"package_name":"sphinxcontrib-qthelp","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853952592,"package_name":"sphinxcontrib-serializinghtml","ecosystem":"pypi","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":25853952663,"package_name":"stack-data","ecosystem":"pypi","requirements":"0.6.3","direct":false,"kind":"runtime","optional":false},{"id":25853952664,"package_name":"structlog","ecosystem":"pypi","requirements":"25.5.0","direct":false,"kind":"runtime","optional":false},{"id":25853952665,"package_name":"terminado","ecosystem":"pypi","requirements":"0.18.1","direct":false,"kind":"runtime","optional":false},{"id":25853952666,"package_name":"tinycss2","ecosystem":"pypi","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853952667,"package_name":"tomli","ecosystem":"pypi","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":25853952668,"package_name":"tomli-w","ecosystem":"pypi","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853952669,"package_name":"toolz","ecosystem":"pypi","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853952729,"package_name":"tornado","ecosystem":"pypi","requirements":"6.5.5","direct":false,"kind":"runtime","optional":false},{"id":25853952738,"package_name":"traitlets","ecosystem":"pypi","requirements":"5.14.3","direct":false,"kind":"runtime","optional":false},{"id":25853952739,"package_name":"twine","ecosystem":"pypi","requirements":"6.2.0","direct":false,"kind":"runtime","optional":false},{"id":25853952749,"package_name":"types-psutil","ecosystem":"pypi","requirements":"7.2.2.20260130","direct":false,"kind":"runtime","optional":false},{"id":25853952788,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"4.15.0","direct":false,"kind":"runtime","optional":false},{"id":25853952789,"package_name":"tzdata","ecosystem":"pypi","requirements":"2025.3","direct":false,"kind":"runtime","optional":false},{"id":25853952790,"package_name":"uri-template","ecosystem":"pypi","requirements":"1.3.0","direct":false,"kind":"runtime","optional":false},{"id":25853952791,"package_name":"urllib3","ecosystem":"pypi","requirements":"2.6.3","direct":false,"kind":"runtime","optional":false},{"id":25853952792,"package_name":"wcwidth","ecosystem":"pypi","requirements":"0.6.0","direct":false,"kind":"runtime","optional":false},{"id":25853952917,"package_name":"webcolors","ecosystem":"pypi","requirements":"25.10.0","direct":false,"kind":"runtime","optional":false},{"id":25853952918,"package_name":"webencodings","ecosystem":"pypi","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":25853952937,"package_name":"websocket-client","ecosystem":"pypi","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":25853952938,"package_name":"widgetsnbextension","ecosystem":"pypi","requirements":"4.0.15","direct":false,"kind":"runtime","optional":false},{"id":25853952957,"package_name":"xarray","ecosystem":"pypi","requirements":"2025.6.1","direct":false,"kind":"runtime","optional":false},{"id":25853953210,"package_name":"xarray","ecosystem":"pypi","requirements":"2026.1.0","direct":false,"kind":"runtime","optional":false},{"id":25853953211,"package_name":"zipp","ecosystem":"pypi","requirements":"3.23.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2026-04-04T22:01:02.255Z","updated_at":"2026-04-04T22:01:02.255Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/Dockerfile","dependencies":[{"id":25853949345,"package_name":"python","ecosystem":"docker","requirements":"3.11-slim","direct":true,"kind":"build","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/benchmarks.yml","sha":null,"kind":"manifest","created_at":"2026-04-04T22:01:01.730Z","updated_at":"2026-04-04T22:01:01.730Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/.github/workflows/benchmarks.yml","dependencies":[{"id":25853949199,"package_name":"actions/checkout","ecosystem":"actions","requirements":"34e114876b0b11c390a56381ad16ebd13914f8d5","direct":true,"kind":"composite","optional":false},{"id":25853949200,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"a26af69be951a213d495a4c3e4e4022e16d87065","direct":true,"kind":"composite","optional":false},{"id":25853949201,"package_name":"astral-sh/setup-uv","ecosystem":"actions","requirements":"e58605a9b6da7c637471fab8847a5e5a6b8df081","direct":true,"kind":"composite","optional":false},{"id":25853949202,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"ea165f8d65b6e75b540449e92b4886f43607fa02","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release.yml","sha":null,"kind":"manifest","created_at":"2026-04-04T22:01:01.955Z","updated_at":"2026-04-04T22:01:01.955Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/.github/workflows/release.yml","dependencies":[{"id":25853949289,"package_name":"actions/checkout","ecosystem":"actions","requirements":"34e114876b0b11c390a56381ad16ebd13914f8d5","direct":true,"kind":"composite","optional":false},{"id":25853949290,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"a26af69be951a213d495a4c3e4e4022e16d87065","direct":true,"kind":"composite","optional":false},{"id":25853949291,"package_name":"astral-sh/setup-uv","ecosystem":"actions","requirements":"e58605a9b6da7c637471fab8847a5e5a6b8df081","direct":true,"kind":"composite","optional":false},{"id":25853949292,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"ea165f8d65b6e75b540449e92b4886f43607fa02","direct":true,"kind":"composite","optional":false},{"id":25853949293,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/unit-tests-workflow.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:19.707Z","updated_at":"2023-09-21T19:45:19.707Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/.github/workflows/unit-tests-workflow.yml","dependencies":[{"id":13856857991,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856857992,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:19.977Z","updated_at":"2023-09-21T19:45:19.977Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/pyproject.toml","dependencies":[{"id":13856858737,"package_name":"cftime","ecosystem":"pypi","requirements":"1.6.2","direct":true,"kind":"runtime","optional":false},{"id":13856858738,"package_name":"dask","ecosystem":"pypi","requirements":"2022.2.0","direct":true,"kind":"runtime","optional":false},{"id":13856858739,"package_name":"h5netcdf","ecosystem":"pypi","requirements":"1.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856858740,"package_name":"python","ecosystem":"pypi","requirements":"\u003e=3.8,\u003c3.12","direct":true,"kind":"runtime","optional":false},{"id":13856858741,"package_name":"scipy","ecosystem":"pypi","requirements":"1.9.3","direct":true,"kind":"runtime","optional":false},{"id":13856858742,"package_name":"xarray","ecosystem":"pypi","requirements":"2023.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856858743,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"develop","optional":false},{"id":13856858744,"package_name":"toml","ecosystem":"pypi","requirements":"0.10.2","direct":true,"kind":"develop","optional":false}]},{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2024-11-05T23:38:18.132Z","updated_at":"2024-11-05T23:38:18.132Z","repository_link":"https://github.com/monocongo/climate_indices/blob/main/docs/requirements.txt","dependencies":[{"id":20582029579,"package_name":"toml","ecosystem":"pypi","requirements":"\u003e=0.10.2","direct":true,"kind":"runtime","optional":false}]}],"score":16.99029906293525,"created_at":"2023-09-11T11:54:35.942Z","updated_at":"2026-04-20T05:30:23.716Z","avatar_url":"https://github.com/monocongo.png","language":"Python","category":"Climate Change","sub_category":"Climate Data Processing and Analysis","monthly_downloads":2349,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"![Banner Image](https://raw.githubusercontent.com/monocongo/climate_indices/master/assets/Global_Monthly_SPI.jpg)\n\n# climate_indices\n\n[//]: # ([![Coverage Status]\u0026#40;https://coveralls.io/repos/github/monocongo/climate_indices/badge.svg?branch=master\u0026#41;]\u0026#40;https://coveralls.io/github/monocongo/climate_indices?branch=master\u0026#41;)\n[//]: # ([![Codacy Status]\u0026#40;https://api.codacy.com/project/badge/Grade/48563cbc37504fc6aa72100370e71f58\u0026#41;]\u0026#40;https://www.codacy.com/app/monocongo/climate_indices?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=monocongo/climate_indices\u0026amp;utm_campaign=Badge_Grade\u0026#41;)\n[![Actions Status](https://github.com/monocongo/climate_indices/workflows/tests/badge.svg)](https://github.com/monocongo/climate_indices/actions)\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-green.svg)](https://opensource.org/licenses/BSD-3-Clause)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/climate-indices)\n\n#### Python library of indices useful for climate monitoring\n\nThis project contains Python implementations of various climate index algorithms which provide\na geographical and temporal picture of the severity and duration of precipitation and temperature\nanomalies useful for climate monitoring and research.\n\nThe following indices are provided:\n\n- [SPI](https://climatedataguide.ucar.edu/climate-data/standardized-precipitation-index-spi),\n  Standardized Precipitation Index, utilizing both gamma and Pearson Type III distributions\n- [SPEI](https://www.researchgate.net/publication/252361460_The_Standardized_Precipitation-Evapotranspiration_Index_SPEI_a_multiscalar_drought_index),\n  Standardized Precipitation Evapotranspiration Index, utilizing both gamma and Pearson Type III distributions\n- [PET](https://www.ncdc.noaa.gov/monitoring-references/dyk/potential-evapotranspiration), Potential Evapotranspiration, utilizing either [Thornthwaite](http://dx.doi.org/10.2307/21073)\n  or [Hargreaves](http://dx.doi.org/10.13031/2013.26773) equations\n- [PNP](http://www.droughtmanagement.info/percent-of-normal-precipitation/),\n  Percentage of Normal Precipitation\n- [PCI](https://www.tandfonline.com/doi/abs/10.1111/J.0033-0124.1980.00300.X), Precipitation Concentration Index\n\nThis Python implementation of the above climate index algorithms is being developed\nwith the following goals in mind:\n\n- to provide an open source software package to compute a suite of\n  climate indices commonly used for climate monitoring, with well\n  documented code that is faithful to the relevant literature and\n  which produces scientifically verifiable results\n- to provide a central, open location for participation and collaboration\n  for researchers, developers, and users of climate indices\n- to facilitate standardization and consensus on best-of-breed\n  climate index algorithms and corresponding compliant implementations in Python\n- to provide transparency into the operational code used for climate\n  monitoring activities at NCEI/NOAA, and consequent reproducibility\n  of published datasets computed from this package\n- to incorporate modern software engineering principles and scientific programming\n  best practices\n\n\nThis is a developmental/forked version of code that was originally developed by NIDIS/NCEI/NOAA. \nSee [drought.gov](https://www.drought.gov/drought/python-climate-indices).\n\n- [__Documentation__](https://climate-indices.readthedocs.io/en/latest/)\n- [__License__](https://github.com/monocongo/climate_indices/blob/master/LICENSE)\n- [__Disclaimer__](https://github.com/monocongo/climate_indices/blob/master/DISCLAIMER)\n\n## Supported Python Versions\n\n| Python Version | Status | Notes |\n|:--------------:|:------:|:------|\n| 3.10 | Supported | Minimum supported version |\n| 3.11 | Supported | |\n| 3.12 | Supported | |\n| 3.13 | Supported | Latest supported version |\n\nAll versions are tested on Linux (ubuntu-latest). Python 3.10 and 3.13 are additionally\ntested on macOS. Both latest and minimum declared dependency versions are tested in CI.\n\n### Version Support Policy\n\nThis project provides **12 months notice** before dropping support for a Python version.\nWhen a version approaches end-of-life, removal will be announced via the CHANGELOG and a\nGitHub issue, and implemented no sooner than 12 months after announcement with a version bump.\n\nPython 3.9 support was dropped in v2.2.0 (August 2025) due to `scipy\u003e=1.15.3` requiring 3.10+.\n\n### API Stability\n\n| API Surface | Status | Guarantee |\n|:------------|:------:|:----------|\n| NumPy array functions (`indices.spi`, `indices.spei`, `indices.pet`) | **Stable** | No breaking changes in minor versions |\n| xarray DataArray functions (`spi()`, `spei()`, `pet_thornthwaite()`, `pet_hargreaves()`) | **Beta** | No breaking changes in patch versions |\n\n**Stable API**: The NumPy-based computation functions follow strict semantic versioning.\n\n**Beta API**: The xarray adapter layer provides automatic parameter inference, coordinate\npreservation, CF metadata, and Dask support. While beta, computation results are **identical**\nto the stable NumPy API — only the interface surface (parameter names, metadata attributes,\ncoordinate handling) may evolve. Beta features are tagged with ``BetaFeatureWarning`` and\nmarked in docstrings.\n\n## Migration Guide for v2.2.0\n\n**Breaking Change: Exception-Based Error Handling**\n\nVersion 2.2.0 introduces a significant architectural improvement in error handling. The library now uses exception-based error handling instead of returning `None` tuples for error conditions.\n\n### What Changed\n\n**Before (v2.1.x and earlier):**\n```python\n# Old behavior - functions returned None tuples on failure\nresult = some_internal_function(data)\nif result == (None, None, None, None):\n    # Handle error case\n    pass\n```\n\n**After (v2.2.0+):**\n```python\n# New behavior - functions raise specific exceptions\ntry:\n    result = some_internal_function(data)\nexcept climate_indices.compute.InsufficientDataError as e:\n    # Handle insufficient data case\n    print(f\"Not enough data: {e.non_zero_count} values found, {e.required_count} required\")\nexcept climate_indices.compute.PearsonFittingError as e:\n    # Handle fitting failure case\n    print(f\"Fitting failed: {e}\")\n```\n\n### New Exception Hierarchy\n\n- `DistributionFittingError` (base class)\n  - `InsufficientDataError` - raised when there are too few non-zero values for statistical fitting\n  - `PearsonFittingError` - raised when L-moments calculation fails for Pearson Type III distribution\n\n### Impact on Users\n\n- **Direct API users**: No changes needed - the public SPI/SPEI functions handle exceptions internally\n- **Library integrators**: If you were checking for `None` return values from internal functions, update to use try/catch blocks\n- **Benefits**: More informative error messages, better debugging, and automatic fallback from Pearson to Gamma distribution when appropriate\n\n### Code Quality Improvements\n\nVersion 2.2.0 also addresses floating point comparison issues (`python:S1244`) throughout the codebase:\n\n**Floating Point Comparisons:**\n```python\n# ❌ OLD: Direct equality checks (unreliable)\nif values == 0.0:\n    handle_zero_case()\n\n# ✅ NEW: Safe comparison using numpy.isclose()\nif np.isclose(values, 0.0, atol=1e-8):\n    handle_zero_case()\n```\n\n**Benefits:**\n- Eliminates floating point precision issues in statistical parameter validation\n- Improves test reliability and numerical robustness\n- Follows scientific computing best practices for floating point arithmetic\n- See `docs/floating_point_best_practices.md` for comprehensive guidelines\n\n#### Citation\nYou can cite `climate_indices` in your projects and research papers via the BibTeX \nentry below.\n```\n@misc {climate_indices,\n    author = \"James Adams\",\n    title  = \"climate_indices, an open source Python library providing reference implementations of commonly used climate indices\",\n    url    = \"https://github.com/monocongo/climate_indices\",\n    month  = \"may\",\n    year   = \"2017--\"\n}\n```\n","funding_links":[],"readme_doi_urls":["http://dx.doi.org/10.2307/21073","http://dx.doi.org/10.13031/2013.26773"],"works":{"http://dx.doi.org/10.2307/21073":null,"http://dx.doi.org/10.13031/2013.26773":{"id":"https://openalex.org/W2003696872","doi":"https://doi.org/10.13031/2013.26773","title":"Reference Crop Evapotranspiration from Temperature","display_name":"Reference Crop Evapotranspiration from Temperature","publication_year":1985,"publication_date":"1985-01-01","ids":{"openalex":"https://openalex.org/W2003696872","doi":"https://doi.org/10.13031/2013.26773","mag":"2003696872"},"language":"en","primary_location":{"is_oa":false,"landing_page_url":"https://doi.org/10.13031/2013.26773","pdf_url":null,"source":{"id":"https://openalex.org/S199825796","display_name":"Applied Engineering in Agriculture","issn_l":"0883-8542","issn":["0883-8542","1943-7838"],"is_oa":false,"is_in_doaj":false,"host_organization":"https://openalex.org/P4320800553","host_organization_name":"American Society of Agricultural and Biological Engineers","host_organization_lineage":["https://openalex.org/P4320800553"],"host_organization_lineage_names":["American Society of Agricultural and Biological Engineers"],"type":"journal"},"license":null,"version":null,"is_accepted":false,"is_published":false},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5085630609","display_name":"George H. Hargreaves","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"George H. Hargreaves","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"last","author":{"id":"https://openalex.org/A5021493235","display_name":"Zohrab Samani","orcid":"https://orcid.org/0000-0002-3273-0599"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Zohrab A. Samani","raw_affiliation_string":"","raw_affiliation_strings":[]}],"countries_distinct_count":0,"institutions_distinct_count":0,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"has_fulltext":true,"fulltext_origin":"ngrams","cited_by_count":2893,"cited_by_percentile_year":{"min":99,"max":100},"biblio":{"volume":"1","issue":"2","first_page":"96","last_page":"99"},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"temperature","score":0.3682}],"concepts":[{"id":"https://openalex.org/C85871539","wikidata":"https://www.wikidata.org/wiki/Q734533","display_name":"Lysimeter","level":3,"score":0.94840145},{"id":"https://openalex.org/C176783924","wikidata":"https://www.wikidata.org/wiki/Q828158","display_name":"Evapotranspiration","level":2,"score":0.9220256},{"id":"https://openalex.org/C39432304","wikidata":"https://www.wikidata.org/wiki/Q188847","display_name":"Environmental science","level":0,"score":0.68160385},{"id":"https://openalex.org/C2777589951","wikidata":"https://www.wikidata.org/wiki/Q6073845","display_name":"Irrigation scheduling","level":3,"score":0.6265212},{"id":"https://openalex.org/C72551326","wikidata":"https://www.wikidata.org/wiki/Q5187947","display_name":"Crop coefficient","level":3,"score":0.60088706},{"id":"https://openalex.org/C88862950","wikidata":"https://www.wikidata.org/wiki/Q11453","display_name":"Irrigation","level":2,"score":0.5616112},{"id":"https://openalex.org/C76886044","wikidata":"https://www.wikidata.org/wiki/Q2883300","display_name":"Hydrology (agriculture)","level":2,"score":0.46312696},{"id":"https://openalex.org/C137660486","wikidata":"https://www.wikidata.org/wiki/Q732240","display_name":"Growing season","level":2,"score":0.45333606},{"id":"https://openalex.org/C66465714","wikidata":"https://www.wikidata.org/wiki/Q1148989","display_name":"Water balance","level":2,"score":0.43861634},{"id":"https://openalex.org/C6557445","wikidata":"https://www.wikidata.org/wiki/Q173113","display_name":"Agronomy","level":1,"score":0.24487883},{"id":"https://openalex.org/C159390177","wikidata":"https://www.wikidata.org/wiki/Q9161265","display_name":"Soil science","level":1,"score":0.13391718},{"id":"https://openalex.org/C18903297","wikidata":"https://www.wikidata.org/wiki/Q7150","display_name":"Ecology","level":1,"score":0.12926763},{"id":"https://openalex.org/C159750122","wikidata":"https://www.wikidata.org/wiki/Q96621023","display_name":"Soil water","level":2,"score":0.10600573},{"id":"https://openalex.org/C127413603","wikidata":"https://www.wikidata.org/wiki/Q11023","display_name":"Engineering","level":0,"score":0.076815724},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.058563977},{"id":"https://openalex.org/C187320778","wikidata":"https://www.wikidata.org/wiki/Q1349130","display_name":"Geotechnical engineering","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"is_oa":false,"landing_page_url":"https://doi.org/10.13031/2013.26773","pdf_url":null,"source":{"id":"https://openalex.org/S199825796","display_name":"Applied Engineering in Agriculture","issn_l":"0883-8542","issn":["0883-8542","1943-7838"],"is_oa":false,"is_in_doaj":false,"host_organization":"https://openalex.org/P4320800553","host_organization_name":"American Society of Agricultural and Biological Engineers","host_organization_lineage":["https://openalex.org/P4320800553"],"host_organization_lineage_names":["American Society of Agricultural and Biological Engineers"],"type":"journal"},"license":null,"version":null,"is_accepted":false,"is_published":false}],"best_oa_location":null,"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/6","display_name":"Clean water and sanitation","score":0.27},{"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure","score":0.16},{"id":"https://metadata.un.org/sdg/17","display_name":"Partnerships for the goals","score":0.15}],"grants":[],"referenced_works_count":0,"referenced_works":[],"related_works":["https://openalex.org/W2547596733","https://openalex.org/W2020602466","https://openalex.org/W176695133","https://openalex.org/W2073613654","https://openalex.org/W2526732096","https://openalex.org/W2387097233","https://openalex.org/W1996227453","https://openalex.org/W2921976897","https://openalex.org/W2994642906","https://openalex.org/W2622033277"],"ngrams_url":"https://api.openalex.org/works/W2003696872/ngrams","abstract_inverted_index":{"MEASURED":[0],"lysimeter":[1,61,96],"evapotranspiration":[2,19,85],"of":[3,16,31,36,59,71,145],"Alta":[4],"fescue":[5],"grass":[6,84],"(a":[7],"cool":[8,82],"season":[9,83],"grass)":[10],"is":[11,23,43],"taken":[12],"as":[13,128,132],"an":[14],"index":[15],"reference":[17],"crop":[18,153],"(ETo).":[20],"An":[21],"equation":[22,42,53],"presented":[24],"that":[25,112,122],"estimates":[26],"ETo":[27,72],"from":[28,63,98,134],"measured":[29,81],"values":[30,35,70,125],"daily":[32,60],"or":[33],"mean":[34],"maximum":[37],"and":[38,66,91,101,121,130,147,170],"minimum":[39],"temperature.":[40],"This":[41],"compared":[44],"with":[45,77,80,95,102],"various":[46,107],"other":[47,74,78,136],"methods":[48,79,138],"for":[49,73,106,140,151],"estimating":[50,137,152],"ETo.":[51],"The":[52],"was":[54],"developed":[55],"using":[56],"eight":[57],"years":[58],"data":[62,97,150],"Davis,":[64],"California":[65],"used":[67,139],"to":[68,165],"estimate":[69],"locations.":[75],"Comparisons":[76],"at":[86],"Aspendale,":[87],"Australia;":[88],"Lompoc,":[89],"California;":[90],"Seabrook,":[92],"New":[93],"Jersey;":[94],"Damin,":[99],"Haiti;":[100],"the":[103,113,123,135,143,173],"modified":[104],"Penman":[105],"locations":[108],"in":[109,156,172],"Bangladesh":[110],"indicated":[111],"method":[114,161],"usually":[115],"does":[116],"not":[117],"require":[118],"local":[119],"calibration":[120],"estimated":[124],"are":[126],"probably":[127],"reliable":[129,148],"useable":[131],"those":[133],"comparison.":[141],"Considering":[142],"scarcity":[144],"complete":[146],"climatic":[149],"water":[154],"requirements":[155],"developing":[157,174],"countries,":[158],"this":[159],"proposed":[160],"can":[162],"do":[163],"much":[164],"improve":[166],"irrigation":[167],"planning":[168],"design":[169],"scheduling":[171],"countries.":[175]},"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W2003696872","counts_by_year":[{"year":2023,"cited_by_count":250},{"year":2022,"cited_by_count":281},{"year":2021,"cited_by_count":255},{"year":2020,"cited_by_count":289},{"year":2019,"cited_by_count":230},{"year":2018,"cited_by_count":174},{"year":2017,"cited_by_count":171},{"year":2016,"cited_by_count":158},{"year":2015,"cited_by_count":143},{"year":2014,"cited_by_count":128},{"year":2013,"cited_by_count":141},{"year":2012,"cited_by_count":131}],"updated_date":"2023-12-14T12:18:24.719616","created_date":"2016-06-24"}},"citation_counts":{"http://dx.doi.org/10.13031/2013.26773":2351},"total_citations":2351,"keywords_from_contributors":["gtk","qt","tk","wx"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/787","html_url":"https://ost.ecosyste.ms/projects/787"}