{"id":861,"name":"weather-tools","description":"A series of command-line tools to make common data engineering tasks easier for researchers in climate and weather.","url":"https://github.com/google/weather-tools","last_synced_at":"2026-04-16T07:03:17.835Z","repository":{"id":37482984,"uuid":"430884167","full_name":"google/weather-tools","owner":"google","description":"Tools to make weather data accessible and useful.","archived":false,"fork":false,"pushed_at":"2026-03-23T12:40:10.000Z","size":205044,"stargazers_count":247,"open_issues_count":92,"forks_count":49,"subscribers_count":15,"default_branch":"main","last_synced_at":"2026-03-26T14:37:31.545Z","etag":null,"topics":["apache-beam","python","weather"],"latest_commit_sha":null,"homepage":"https://weather-tools.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2021-11-22T22:30:09.000Z","updated_at":"2026-03-23T12:40:11.000Z","dependencies_parsed_at":"2023-09-21T19:45:36.728Z","dependency_job_id":"d5ec43e6-7061-43b2-8c4f-34dfd79a6d63","html_url":"https://github.com/google/weather-tools","commit_stats":{"total_commits":343,"total_committers":32,"mean_commits":10.71875,"dds":0.6676384839650146,"last_synced_commit":"52d91b16507750644a6666a2b553ec66f6a0b18d"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/google/weather-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/sbom","scorecard":{"id":438191,"data":{"date":"2025-08-11","repo":{"name":"github.com/google/weather-tools","commit":"8cc033b5f9166aec31cf2857005ff52630ecd3dc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.6,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","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":6,"reason":"7 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 6","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.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":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/google/.github/SECURITY.md:1","Info: Found linked content: github.com/google/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/google/.github/SECURITY.md:1","Info: Found text in security policy: github.com/google/.github/SECURITY.md:1"],"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":"SAST","score":6,"reason":"SAST tool is not run on all commits -- score normalized to 6","details":["Warn: 19 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:115: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:98: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:17","Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/cli/Dockerfile:16: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/downloader_kubernetes/Dockerfile:30: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/fastapi-server/Dockerfile:16: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/license_deployment/Dockerfile:16: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: pipCommand not pinned by hash: bin/install-branch:17","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:85","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:89","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:84","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:85","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   6 containerImage dependencies pinned","Info:   0 out of   7 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-19T05:08:05.741Z","repository_id":37482984,"created_at":"2025-08-19T05:08:05.741Z","updated_at":"2025-08-19T05:08:05.741Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31204440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-30T15:24:02.938Z","status":"ssl_error","status_checked_at":"2026-03-30T15:23:44.804Z","response_time":138,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"google","name":"Google","uuid":"1342004","kind":"organization","description":"Google ❤️ Open Source","email":"opensource@google.com","website":"https://opensource.google/","location":"United States of America","twitter":"GoogleOSS","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1342004?v=4","repositories_count":2773,"last_synced_at":"2025-08-12T15:55:14.931Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/google","funding_links":[],"total_stars":1967885,"followers":58475,"following":0,"created_at":"2022-11-02T16:20:58.973Z","updated_at":"2025-08-12T15:55:14.931Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google/repositories"},"packages":[{"id":2751141,"name":"google-weather-tools","ecosystem":"pypi","description":"Apache Beam pipelines to make weather data accessible and useful.","homepage":"https://weather-tools.readthedocs.io/","licenses":"License :: OSI Approved :: Apache Software License","normalized_licenses":["Apache-1.1"],"repository_url":"https://github.com/google/weather-tools","keywords_array":[],"namespace":null,"versions_count":7,"first_release_published_at":"2022-01-11T01:20:12.000Z","latest_release_published_at":"2022-06-29T09:07:44.000Z","latest_release_number":"0.3.2","last_synced_at":"2026-03-18T17:02:55.113Z","created_at":"2022-04-10T11:10:27.231Z","updated_at":"2026-03-18T17:02:55.114Z","registry_url":"https://pypi.org/project/google-weather-tools/","install_command":"pip install google-weather-tools --index-url https://pypi.org/simple","documentation_url":"https://google-weather-tools.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 4 - Beta","Environment :: Console","Intended Audience :: Developers","Intended Audience :: Information Technology","Intended Audience :: Science/Research","License :: OSI Approved :: Apache Software License","Operating System :: MacOS :: MacOS X","Operating System :: POSIX","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Topic :: Scientific/Engineering :: Atmospheric Science"],"normalized_name":"google-weather-tools","project_status":null},"repo_metadata":{"id":37482984,"uuid":"430884167","full_name":"google/weather-tools","owner":"google","description":"Tools to make weather data accessible and useful.","archived":false,"fork":false,"pushed_at":"2024-10-21T09:40:05.000Z","size":205008,"stargazers_count":214,"open_issues_count":87,"forks_count":40,"subscribers_count":16,"default_branch":"main","last_synced_at":"2024-10-29T21:58:58.988Z","etag":null,"topics":["apache-beam","python","weather"],"latest_commit_sha":null,"homepage":"https://weather-tools.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-11-22T22:30:09.000Z","updated_at":"2024-10-25T11:11:31.000Z","dependencies_parsed_at":"2023-09-21T19:45:36.728Z","dependency_job_id":"d5ec43e6-7061-43b2-8c4f-34dfd79a6d63","html_url":"https://github.com/google/weather-tools","commit_stats":{"total_commits":315,"total_committers":32,"mean_commits":9.84375,"dds":0.638095238095238,"last_synced_commit":"76da8074dfc9b733759016f4169926d2096b7589"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222145755,"owners_count":16938487,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"google","name":"Google","uuid":"1342004","kind":"organization","description":"Google ❤️ Open Source","email":"opensource@google.com","website":"https://opensource.google/","location":null,"twitter":"GoogleOSS","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1342004?v=4","repositories_count":2445,"last_synced_at":"2023-04-09T05:37:45.829Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/google","funding_links":[],"total_stars":1826805,"followers":null,"following":null,"created_at":"2022-11-02T16:20:58.973Z","updated_at":"2023-04-09T05:37:58.691Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google/repositories"},"tags":[{"name":"vconda.candidate.vo","sha":"85799070805ac5149d9c576f4ca13c2381d3fc89","kind":"tag","published_at":"2023-09-27T14:56:18.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/vconda.candidate.vo","html_url":"https://github.com/google/weather-tools/releases/tag/vconda.candidate.vo","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/vconda.candidate.vo","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/vconda.candidate.vo/manifests"},{"name":"conda-candidate-v0","sha":"2923a4957df022b9106503981842ed06ed134ed4","kind":"tag","published_at":"2022-12-08T22:44:21.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/conda-candidate-v0","html_url":"https://github.com/google/weather-tools/releases/tag/conda-candidate-v0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/conda-candidate-v0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/conda-candidate-v0/manifests"},{"name":"v0.3.2","sha":"a6a9c06ec7a765fc557c19be8eba2629df33b82d","kind":"tag","published_at":"2022-06-27T07:23:06.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.3.2","html_url":"https://github.com/google/weather-tools/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.2/manifests"},{"name":"v0.3.1","sha":"c2cb9ec30bc9a1fb17d6e190dcce3b8636362068","kind":"tag","published_at":"2022-04-29T19:04:20.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.3.1","html_url":"https://github.com/google/weather-tools/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"c574e5435a6f463d8ec47ad4a84fa8cc3f181b6e","kind":"tag","published_at":"2022-04-24T19:24:19.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.3.0","html_url":"https://github.com/google/weather-tools/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.0/manifests"},{"name":"v0.2.2","sha":"c7a6c4f8b3602ad33518f202bbd7d08638b0a7c5","kind":"tag","published_at":"2022-03-29T00:58:54.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.2.2","html_url":"https://github.com/google/weather-tools/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"c7a6c4f8b3602ad33518f202bbd7d08638b0a7c5","kind":"tag","published_at":"2022-03-29T00:09:08.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.2.1","html_url":"https://github.com/google/weather-tools/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"2d3df5996b17e03ca08a85d2fbdfa768cd6d7ac3","kind":"tag","published_at":"2022-01-26T23:11:41.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.2.0","html_url":"https://github.com/google/weather-tools/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.0/manifests"},{"name":"v0.1.1","sha":"e4a00f7bdebbfdc885b328b862071db77894b836","kind":"tag","published_at":"2022-01-11T01:41:27.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.1.1","html_url":"https://github.com/google/weather-tools/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"3bae7b3c8ac6611b671d0956b6ee2238df4353aa","kind":"tag","published_at":"2022-01-11T01:16:19.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.1.0","html_url":"https://github.com/google/weather-tools/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2024-10-30T01:43:50.756Z","dependent_packages_count":0,"downloads":73,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":32.32405970469922,"dependent_repos_count":21.71838761843193,"dependent_packages_count":10.002282794063202,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":21.348243372398116},"purl":"pkg:pypi/google-weather-tools","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/google-weather-tools","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/google-weather-tools","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/google-weather-tools/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T20:31:09.981Z","issues_count":150,"pull_requests_count":345,"avg_time_to_close_issue":6568451.25,"avg_time_to_close_pull_request":838270.2910216718,"issues_closed_count":80,"pull_requests_closed_count":323,"pull_request_authors_count":27,"issue_authors_count":19,"avg_comments_per_issue":1.12,"avg_comments_per_pull_request":0.5739130434782609,"merged_pull_requests_count":289,"bot_issues_count":0,"bot_pull_requests_count":3,"past_year_issues_count":4,"past_year_pull_requests_count":78,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1027954.3287671233,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":73,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.25,"past_year_avg_comments_per_pull_request":0.15384615384615385,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":70,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/issues","maintainers":[{"login":"alxmrs","count":170,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/alxmrs"},{"login":"mahrsee1997","count":55,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mahrsee1997"},{"login":"deepgabani8","count":44,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deepgabani8"},{"login":"DarshanSP19","count":22,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DarshanSP19"},{"login":"dabhicusp","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dabhicusp"},{"login":"blackvvine","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/blackvvine"},{"login":"j9sh264","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/j9sh264"},{"login":"ksic8","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ksic8"},{"login":"pbattaglia","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pbattaglia"},{"login":"pramodg","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pramodg"},{"login":"uhager","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/uhager"},{"login":"floraxue","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floraxue"},{"login":"deep-gabani-google","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deep-gabani-google"},{"login":"raspstephan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/raspstephan"},{"login":"shoyer","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/shoyer"}],"active_maintainers":[{"login":"DarshanSP19","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DarshanSP19"},{"login":"deepgabani8","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deepgabani8"},{"login":"j9sh264","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/j9sh264"},{"login":"dabhicusp","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dabhicusp"},{"login":"mahrsee1997","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mahrsee1997"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/google-weather-tools/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/google-weather-tools/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/google-weather-tools/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/google-weather-tools/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/google-weather-tools/codemeta","maintainers":[{"uuid":"weather-tools-devs","login":"weather-tools-devs","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/weather-tools-devs/","role":null,"created_at":"2023-02-24T08:34:56.231Z","updated_at":"2023-02-24T08:34:56.231Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/weather-tools-devs/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":819709,"maintainers_count":349587,"namespaces_count":0,"keywords_count":0,"github":"pypi","metadata":{"funded_packages_count":52857},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-03-18T07:56:03.051Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},{"id":11733082,"name":"github.com/google/weather-tools","ecosystem":"go","description":null,"homepage":null,"licenses":"apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/google/weather-tools","keywords_array":[],"namespace":null,"versions_count":8,"first_release_published_at":"2022-01-11T01:12:22.000Z","latest_release_published_at":"2022-06-27T06:50:59.000Z","latest_release_number":"v0.3.2","last_synced_at":"2026-03-18T17:02:57.595Z","created_at":"2025-06-05T11:14:30.687Z","updated_at":"2026-03-18T17:02:57.595Z","registry_url":"https://pkg.go.dev/github.com/google/weather-tools","install_command":"go get github.com/google/weather-tools","documentation_url":"https://pkg.go.dev/github.com/google/weather-tools#section-documentation","metadata":{},"repo_metadata":{"id":37482984,"uuid":"430884167","full_name":"google/weather-tools","owner":"google","description":"Tools to make weather data accessible and useful.","archived":false,"fork":false,"pushed_at":"2025-09-10T08:25:25.000Z","size":205039,"stargazers_count":236,"open_issues_count":87,"forks_count":45,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-09-24T00:22:05.028Z","etag":null,"topics":["apache-beam","python","weather"],"latest_commit_sha":null,"homepage":"https://weather-tools.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2021-11-22T22:30:09.000Z","updated_at":"2025-09-23T14:42:20.000Z","dependencies_parsed_at":"2023-09-21T19:45:36.728Z","dependency_job_id":"d5ec43e6-7061-43b2-8c4f-34dfd79a6d63","html_url":"https://github.com/google/weather-tools","commit_stats":{"total_commits":343,"total_committers":32,"mean_commits":10.71875,"dds":0.6676384839650146,"last_synced_commit":"52d91b16507750644a6666a2b553ec66f6a0b18d"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/google/weather-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/sbom","scorecard":{"id":438191,"data":{"date":"2025-08-11","repo":{"name":"github.com/google/weather-tools","commit":"8cc033b5f9166aec31cf2857005ff52630ecd3dc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.6,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","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":6,"reason":"7 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 6","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.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":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/google/.github/SECURITY.md:1","Info: Found linked content: github.com/google/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/google/.github/SECURITY.md:1","Info: Found text in security policy: github.com/google/.github/SECURITY.md:1"],"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":"SAST","score":6,"reason":"SAST tool is not run on all commits -- score normalized to 6","details":["Warn: 19 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:115: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:98: update your workflow using https://app.stepsecurity.io/secureworkflow/google/weather-tools/publish.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:17","Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/cli/Dockerfile:16: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/downloader_kubernetes/Dockerfile:30: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/fastapi-server/Dockerfile:16: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: containerImage not pinned by hash: weather_dl_v2/license_deployment/Dockerfile:16: pin your Docker image by updating continuumio/miniconda3:latest to continuumio/miniconda3:latest@sha256:4a2425c3ca891633e5a27280120f3fb6d5960a0f509b7594632cdd5bb8cbaea8","Warn: pipCommand not pinned by hash: bin/install-branch:17","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:85","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:89","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:84","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:85","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   6 containerImage dependencies pinned","Info:   0 out of   7 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-19T05:08:05.741Z","repository_id":37482984,"created_at":"2025-08-19T05:08:05.741Z","updated_at":"2025-08-19T05:08:05.741Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276683162,"owners_count":25685601,"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-09-24T02:00:09.776Z","response_time":97,"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":"google","name":"Google","uuid":"1342004","kind":"organization","description":"Google ❤️ Open Source","email":"opensource@google.com","website":"https://opensource.google/","location":"United States of America","twitter":"GoogleOSS","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1342004?v=4","repositories_count":2773,"last_synced_at":"2025-08-12T15:55:14.931Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/google","funding_links":[],"total_stars":1967885,"followers":58475,"following":0,"created_at":"2022-11-02T16:20:58.973Z","updated_at":"2025-08-12T15:55:14.931Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google/repositories"},"tags":[{"name":"vconda.candidate.vo","sha":"85799070805ac5149d9c576f4ca13c2381d3fc89","kind":"tag","published_at":"2023-09-27T14:56:18.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/vconda.candidate.vo","html_url":"https://github.com/google/weather-tools/releases/tag/vconda.candidate.vo","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@vconda.candidate.vo","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/vconda.candidate.vo","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/vconda.candidate.vo/manifests"},{"name":"conda-candidate-v0","sha":"2923a4957df022b9106503981842ed06ed134ed4","kind":"tag","published_at":"2022-12-08T22:44:21.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/conda-candidate-v0","html_url":"https://github.com/google/weather-tools/releases/tag/conda-candidate-v0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@conda-candidate-v0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/conda-candidate-v0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/conda-candidate-v0/manifests"},{"name":"v0.3.2","sha":"a6a9c06ec7a765fc557c19be8eba2629df33b82d","kind":"tag","published_at":"2022-06-27T07:23:06.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.3.2","html_url":"https://github.com/google/weather-tools/releases/tag/v0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.2/manifests"},{"name":"v0.3.1","sha":"c2cb9ec30bc9a1fb17d6e190dcce3b8636362068","kind":"tag","published_at":"2022-04-29T19:04:20.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.3.1","html_url":"https://github.com/google/weather-tools/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"c574e5435a6f463d8ec47ad4a84fa8cc3f181b6e","kind":"tag","published_at":"2022-04-24T19:24:19.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.3.0","html_url":"https://github.com/google/weather-tools/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.3.0/manifests"},{"name":"v0.2.2","sha":"c7a6c4f8b3602ad33518f202bbd7d08638b0a7c5","kind":"tag","published_at":"2022-03-29T00:58:54.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.2.2","html_url":"https://github.com/google/weather-tools/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"c7a6c4f8b3602ad33518f202bbd7d08638b0a7c5","kind":"tag","published_at":"2022-03-29T00:09:08.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.2.1","html_url":"https://github.com/google/weather-tools/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"2d3df5996b17e03ca08a85d2fbdfa768cd6d7ac3","kind":"tag","published_at":"2022-01-26T23:11:41.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.2.0","html_url":"https://github.com/google/weather-tools/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.2.0/manifests"},{"name":"v0.1.1","sha":"e4a00f7bdebbfdc885b328b862071db77894b836","kind":"tag","published_at":"2022-01-11T01:41:27.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.1.1","html_url":"https://github.com/google/weather-tools/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"3bae7b3c8ac6611b671d0956b6ee2238df4353aa","kind":"tag","published_at":"2022-01-11T01:16:19.000Z","download_url":"https://codeload.github.com/google/weather-tools/tar.gz/v0.1.0","html_url":"https://github.com/google/weather-tools/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/google/weather-tools@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-09-24T02:42:37.253Z","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/google/weather-tools","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/google/weather-tools","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/google/weather-tools","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/google/weather-tools/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-09-11T14:22:33.001Z","issues_count":150,"pull_requests_count":417,"avg_time_to_close_issue":8533095.475609757,"avg_time_to_close_pull_request":805539.2383419689,"issues_closed_count":82,"pull_requests_closed_count":386,"pull_request_authors_count":30,"issue_authors_count":21,"avg_comments_per_issue":1.1733333333333333,"avg_comments_per_pull_request":0.5203836930455635,"merged_pull_requests_count":348,"bot_issues_count":0,"bot_pull_requests_count":5,"past_year_issues_count":3,"past_year_pull_requests_count":57,"past_year_avg_time_to_close_issue":130025.5,"past_year_avg_time_to_close_pull_request":430363.625,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":48,"past_year_pull_request_authors_count":11,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":2.0,"past_year_avg_comments_per_pull_request":0.2807017543859649,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":1,"past_year_merged_pull_requests_count":42,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/issues","maintainers":[{"login":"alxmrs","count":168,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/alxmrs"},{"login":"mahrsee1997","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mahrsee1997"},{"login":"deepgabani8","count":49,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deepgabani8"},{"login":"DarshanSP19","count":37,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DarshanSP19"},{"login":"j9sh264","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/j9sh264"},{"login":"dabhicusp","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dabhicusp"},{"login":"blackvvine","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/blackvvine"},{"login":"ksic8","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ksic8"},{"login":"pbattaglia","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pbattaglia"},{"login":"pramodg","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pramodg"},{"login":"uhager","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/uhager"},{"login":"floraxue","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floraxue"},{"login":"shoyer","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/shoyer"},{"login":"deep-gabani-google","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deep-gabani-google"},{"login":"raspstephan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/raspstephan"}],"active_maintainers":[{"login":"j9sh264","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/j9sh264"},{"login":"deepgabani8","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deepgabani8"},{"login":"ksic8","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ksic8"},{"login":"mahrsee1997","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mahrsee1997"},{"login":"dabhicusp","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dabhicusp"},{"login":"DarshanSP19","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DarshanSP19"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fweather-tools/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fweather-tools/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fweather-tools/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fweather-tools/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgoogle%2Fweather-tools/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2075208,"maintainers_count":0,"namespaces_count":776220,"keywords_count":0,"github":"golang","metadata":{"funded_packages_count":53272},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-03-20T05:39:13.001Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1254442,"full_name":"google/weather-tools","default_branch":"main","total_commits":370,"total_committers":35,"total_bot_commits":2,"total_bot_committers":1,"mean_commits":10.571428571428571,"dds":0.6432432432432432,"past_year_total_commits":19,"past_year_total_committers":7,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":2.7142857142857144,"past_year_dds":0.7894736842105263,"last_synced_at":"2026-03-18T17:07:28.978Z","last_synced_commit":"59268d0231e2d41874123c0b987124d20e729f72","created_at":"2023-03-27T11:45:27.034Z","updated_at":"2026-03-18T17:04:51.729Z","committers":[{"name":"Alex Merose","email":"alxr@google.com","login":"alxmrs","count":132},{"name":"Rahul Mahrsee","email":"86819420+mahrsee1997","login":"mahrsee1997","count":40},{"name":"DeepGabani","email":"60647051+deepgabani8","login":"deepgabani8","count":27},{"name":"Darshan Prajapati","email":"93967637+DarshanSP19","login":"DarshanSP19","count":24},{"name":"aniketinfocusp","email":"122869307+aniketinfocusp","login":"aniketinfocusp","count":20},{"name":"Ulrike Hager","email":"uhager@google.com","login":"uhager","count":16},{"name":"dabhi_cusp","email":"123355381+dabhicusp","login":"dabhicusp","count":13},{"name":"Aniket Singh Rawat","email":"122869307+aniketsinghrawat","login":"aniketsinghrawat","count":12},{"name":"Jash Rana","email":"114065688+j9sh264","login":"j9sh264","count":12},{"name":"Cillian Fennell","email":"cfennell.stflannans@gmail.com","login":"CillianFn","count":8},{"name":"Piyush-Ingale","email":"122958815+Piyush-Ingale","login":"Piyush-Ingale","count":8},{"name":"Shail Parekh","email":"154429633+shail-parekh","login":"shail-parekh","count":8},{"name":"ksic8","email":"101806311+ksic8","login":"ksic8","count":8},{"name":"Aaron Bell","email":"aaronbell@google.com","login":null,"count":4},{"name":"pbattaglia","email":"pbattaglia","login":"pbattaglia","count":4},{"name":"pramodg","email":"640050+pramodg","login":"pramodg","count":4},{"name":"Steven Greenberg","email":"stevengreenberg@gmail.com","login":"sgreenberg","count":4},{"name":"David Lowell","email":"dlowell@google.com","login":"dlowell12","count":3},{"name":"Iman Akbari","email":"imakbari@gmail.com","login":"blackvvine","count":3},{"name":"Sean Campbell","email":"campbellsean@google.com","login":"SeanCampbell","count":2},{"name":"Valliappa (Lak) Lakshmanan","email":"lak@vlakshman.com","login":"lakshmanok","count":2},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"ksic8","email":"kunal@infocusp.in","login":null,"count":2},{"name":"vijay","email":"51013733+pvrraju","login":"pvrraju","count":1},{"name":"Sascha Kahrs","email":"skahrs@google.com","login":null,"count":1},{"name":"Shirish Jamthe","email":"sjamthe@google.com","login":null,"count":1},{"name":"kbp45-cusp","email":"kamlesh@infocusp.com","login":"kbp45-cusp","count":1},{"name":"gurusai-voleti","email":"gvoleti@google.com","login":"gurusai-voleti","count":1},{"name":"Stephan Rasp","email":"raspstephan@gmail.com","login":"raspstephan","count":1},{"name":"Saverio Guzzo","email":"saverio.g.guzzo@gmail.com","login":"saveriogzz","count":1},{"name":"SangamSwadik","email":"sangamswadi.k18@gmail.com","login":"SangamSwadiK","count":1},{"name":"RoshiniFernando","email":"47807830+RoshiniFernando","login":"RoshiniFernando","count":1},{"name":"Pranay Prajapati","email":"pranayprajapati101@gmail.com","login":"pranay101","count":1},{"name":"Mahdieh","email":"mahdiehtaher@gmail.com","login":"mt467","count":1},{"name":"Arun Sathiya","email":"arun@arun.blog","login":"arunsathiya","count":1}],"past_year_committers":[{"name":"Jash Rana","email":"114065688+j9sh264","login":"j9sh264","count":4},{"name":"Darshan Prajapati","email":"93967637+DarshanSP19","login":"DarshanSP19","count":4},{"name":"ksic8","email":"kcshah@google.com","login":"ksic8","count":3},{"name":"Shail Parekh","email":"154429633+shail-parekh","login":"shail-parekh","count":3},{"name":"Piyush-Ingale","email":"122958815+Piyush-Ingale","login":"Piyush-Ingale","count":3},{"name":"vijay","email":"51013733+pvrraju","login":"pvrraju","count":1},{"name":"gurusai-voleti","email":"gvoleti@google.com","login":"gurusai-voleti","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-20T00:00:07.723Z","repositories_count":6201975,"commits_count":935831561,"contributors_count":36160707,"owners_count":1146201,"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":"google/weather-tools","html_url":"https://github.com/google/weather-tools","last_synced_at":"2026-03-18T17:03:32.244Z","status":"active","issues_count":151,"pull_requests_count":428,"avg_time_to_close_issue":8533095.475609757,"avg_time_to_close_pull_request":1027881.0841836735,"issues_closed_count":82,"pull_requests_closed_count":392,"pull_request_authors_count":34,"issue_authors_count":22,"avg_comments_per_issue":1.1655629139072847,"avg_comments_per_pull_request":0.514018691588785,"merged_pull_requests_count":353,"bot_issues_count":0,"bot_pull_requests_count":5,"past_year_issues_count":1,"past_year_pull_requests_count":29,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":581274.2352941176,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":17,"past_year_pull_request_authors_count":11,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.3103448275862069,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":1,"past_year_merged_pull_requests_count":15,"created_at":"2023-05-09T10:39:51.432Z","updated_at":"2026-03-18T17:03:32.244Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fweather-tools/issues","issue_labels_count":{"weather-dl":31,"weather-mv":30,"bug":27,"P1":23,"P2":20,"good first issue":17,"enhancement":10,"documentation":7,"help wanted":5,"P0":5,"P3":4,"weather-sp":4,"can't reproduce":1,"20%":1,"wontfix":1},"pull_request_labels_count":{"enhancement":7,"weather-mv":7,"dependencies":5,"weather-dl":3,"weather-sp":3,"github_actions":3,"bug":1},"issue_author_associations_count":{"COLLABORATOR":132,"CONTRIBUTOR":12,"NONE":6,"MEMBER":1},"pull_request_author_associations_count":{"COLLABORATOR":284,"CONTRIBUTOR":132,"NONE":12},"issue_authors":{"alxmrs":84,"mahrsee1997":13,"blackvvine":12,"deepgabani8":8,"dabhicusp":5,"ksic8":4,"CillianFn":4,"mt467":4,"aniketinfocusp":2,"DarshanSP19":2,"floraxue":2,"jongwooo":1,"pramodg":1,"heyanand":1,"lakshmanok":1,"shoyer":1,"SayeVikram":1,"pbattaglia":1,"rsignell":1,"uhager":1,"aperaza-bsc":1,"nmeijers31":1},"pull_request_authors":{"alxmrs":85,"aniketinfocusp":58,"mahrsee1997":47,"deepgabani8":41,"DarshanSP19":37,"j9sh264":23,"aniketsinghrawat":22,"dabhicusp":16,"Piyush-Ingale":13,"shail-parekh":12,"ksic8":11,"CillianFn":9,"pbattaglia":8,"blackvvine":6,"dependabot[bot]":5,"pramodg":5,"uhager":4,"kbp45-cusp":3,"RoshiniFernando":3,"lakshmanok":2,"pranay101":2,"DishaKD":2,"pvrraju":2,"salmanmkc":2,"raspstephan":1,"arunsathiya":1,"SayeVikram":1,"SangamSwadiK":1,"Vasist10":1,"jongwooo":1,"tanishqvashisht":1,"deep-gabani-google":1,"gurusai-voleti":1,"saveriogzz":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-20T00:00:06.365Z","repositories_count":13828717,"issues_count":34752367,"pull_requests_count":113483958,"authors_count":11207823,"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":{"enhancement":3,"weather-mv":3,"bug":1,"dependencies":1,"github_actions":1,"weather-sp":1},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":14,"CONTRIBUTOR":10,"NONE":5},"past_year_issue_authors":{"SayeVikram":1},"past_year_pull_request_authors":{"ksic8":6,"Piyush-Ingale":5,"DarshanSP19":4,"j9sh264":4,"pvrraju":2,"salmanmkc":2,"shail-parekh":2,"dependabot[bot]":1,"gurusai-voleti":1,"SayeVikram":1,"Vasist10":1},"maintainers":[{"login":"alxmrs","count":168,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/alxmrs"},{"login":"mahrsee1997","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mahrsee1997"},{"login":"deepgabani8","count":49,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deepgabani8"},{"login":"DarshanSP19","count":39,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DarshanSP19"},{"login":"j9sh264","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/j9sh264"},{"login":"dabhicusp","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dabhicusp"},{"login":"blackvvine","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/blackvvine"},{"login":"ksic8","count":15,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ksic8"},{"login":"pbattaglia","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pbattaglia"},{"login":"pramodg","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pramodg"},{"login":"uhager","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/uhager"},{"login":"floraxue","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floraxue"},{"login":"shoyer","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/shoyer"},{"login":"deep-gabani-google","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/deep-gabani-google"},{"login":"raspstephan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/raspstephan"}],"active_maintainers":[{"login":"ksic8","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ksic8"},{"login":"DarshanSP19","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/DarshanSP19"},{"login":"j9sh264","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/j9sh264"}]},"events":{"total":{"DeleteEvent":12,"MemberEvent":4,"PullRequestEvent":45,"ForkEvent":4,"IssuesEvent":8,"WatchEvent":23,"IssueCommentEvent":20,"PushEvent":41,"PullRequestReviewCommentEvent":59,"PullRequestReviewEvent":86,"CreateEvent":12},"last_year":{"DeleteEvent":8,"MemberEvent":4,"PullRequestEvent":26,"ForkEvent":1,"IssuesEvent":3,"WatchEvent":11,"IssueCommentEvent":9,"PushEvent":30,"PullRequestReviewCommentEvent":17,"PullRequestReviewEvent":31,"CreateEvent":10}},"keywords":["apache-beam","python","weather"],"dependencies":[{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-07-18T16:52:51.248Z","updated_at":"2022-07-18T16:52:51.248Z","repository_link":"https://github.com/google/weather-tools/blob/main/docs/requirements.txt","dependencies":[{"id":248277149,"package_name":"myst-parser","ecosystem":"pypi","requirements":"==0.13.7","direct":true,"kind":"runtime","optional":false},{"id":248277150,"package_name":"sphinx","ecosystem":"pypi","requirements":"\u003e=2.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-07-18T16:52:51.612Z","updated_at":"2022-07-18T16:52:51.612Z","repository_link":"https://github.com/google/weather-tools/blob/main/setup.py","dependencies":[{"id":248282025,"package_name":"apache-beam","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T06:15:52.975Z","updated_at":"2023-02-16T06:15:52.975Z","repository_link":"https://github.com/google/weather-tools/blob/main/.github/workflows/ci.yml","dependencies":[{"id":7704343099,"package_name":"styfle/cancel-workflow-action","ecosystem":"actions","requirements":"0.7.0","direct":true,"kind":"composite","optional":false},{"id":7704343101,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343103,"package_name":"actions/cache","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343105,"package_name":"conda-incubator/setup-miniconda","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343106,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343107,"package_name":"s-weigand/setup-conda","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T06:15:53.070Z","updated_at":"2023-02-16T06:15:53.070Z","repository_link":"https://github.com/google/weather-tools/blob/main/.github/workflows/publish.yml","dependencies":[{"id":7704343402,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343403,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2.3.1","direct":true,"kind":"composite","optional":false},{"id":7704343404,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343405,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7704343406,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"v1.4.2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-02-16T06:15:53.412Z","updated_at":"2023-02-16T06:15:53.412Z","repository_link":"https://github.com/google/weather-tools/blob/main/Dockerfile","dependencies":[{"id":7704344777,"package_name":"apache/beam_python${py_version}_sdk","ecosystem":"docker","requirements":"2.40.0","direct":true,"kind":"build","optional":false},{"id":7704344801,"package_name":"continuumio/miniconda3","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:31.383Z","updated_at":"2023-09-21T19:45:31.383Z","repository_link":"https://github.com/google/weather-tools/blob/main/environment.yml","dependencies":[{"id":13856862609,"package_name":"cython","ecosystem":"pypi","requirements":"==0.29.34","direct":true,"kind":"runtime","optional":false},{"id":13856862610,"package_name":"earthengine-api","ecosystem":"pypi","requirements":"==0.1.329","direct":true,"kind":"runtime","optional":false},{"id":13856862611,"package_name":"firebase-admin","ecosystem":"pypi","requirements":"==6.0.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:31.599Z","updated_at":"2023-09-21T19:45:31.599Z","repository_link":"https://github.com/google/weather-tools/blob/main/pyproject.toml","dependencies":[]},{"ecosystem":"pypi","filepath":"weather_dl/setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:31.941Z","updated_at":"2023-09-21T19:45:31.941Z","repository_link":"https://github.com/google/weather-tools/blob/main/weather_dl/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"weather_mv/setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:33.204Z","updated_at":"2023-09-21T19:45:33.204Z","repository_link":"https://github.com/google/weather-tools/blob/main/weather_mv/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"weather_sp/setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:45:36.262Z","updated_at":"2023-09-21T19:45:36.262Z","repository_link":"https://github.com/google/weather-tools/blob/main/weather_sp/setup.py","dependencies":[]}],"score":13.698836282406173,"created_at":"2023-09-11T11:54:36.174Z","updated_at":"2026-04-16T07:03:17.872Z","avatar_url":"https://github.com/google.png","language":"Python","category":"Climate Change","sub_category":"Climate Data Processing and Analysis","monthly_downloads":73,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# weather-tools\n\nApache Beam pipelines to make weather data accessible and useful.\n\n[![CI](https://github.com/googlestaging/weather-tools/actions/workflows/ci.yml/badge.svg)](https://github.com/googlestaging/weather-tools/actions/workflows/ci.yml)\n[![Documentation Status](https://readthedocs.org/projects/weather-tools/badge/?version=latest)](https://weather-tools.readthedocs.io/en/latest/?badge=latest)\n\n## Introduction\n\nThis project contributes a series of command-line tools to make common data engineering tasks easier for researchers in\nclimate and weather. These solutions were born out of the need to improve repeated work performed by research teams\nacross Alphabet.\n\nThe first tool created was the weather downloader (`weather-dl`). This makes it easier to ingest data from the European\nCenter for Medium Range Forecasts (ECMWF). `weather-dl` enables users to describe very specifically what data they'd\nlike to ingest from ECMWF's catalogs. It also offers them control over how to parallelize requests, empowering users to\n[retrieve data efficiently](Efficient-Requests.md). Downloads are driven from a\n[configuration file](Configuration.md), which can be reviewed (and version-controlled) independently of pipeline or\nanalysis code.\n\nWe also provide two additional tools to aid climate and weather researchers: the weather mover (`weather-mv`) and the\nweather splitter (`weather-sp`). These CLIs are still in their alpha stages of development. Yet, they have been used for\nproduction workflows for several partner teams.\n\nWe created the weather mover (`weather-mv`) to load geospatial data from cloud buckets\ninto [Google BigQuery](https://cloud.google.com/bigquery). This enables rapid exploratory analysis and visualization of\nweather data: From BigQuery, scientists can load arbitrary climate data fields into a Pandas or XArray dataframe via a\nsimple SQL query.\n\nThe weather splitter (`weather-sp`) helps normalize how archival weather data is stored in cloud buckets:\nWhether you're trying to merge two datasets with overlapping variables — or, you simply need\nto [open Grib data from XArray](https://github.com/ecmwf/cfgrib/issues/2), it's really useful to split datasets into\ntheir component variables.\n\n## Installing\n\nIt is currently recommended that you create a local python environment (with\n[Anaconda](https://www.anaconda.com/products/individual)) and install the\nsources as follows:\n\n  ```shell\nconda env create --name weather-tools --file=environment.yml\nconda activate weather-tools\n  ```\n\n\u003e Note: Due to its use of 3rd-party binary dependencies such as GDAL and MetView, `weather-tools`\n\u003e is transitioning from PyPi to Conda for its main release channel. The instructions above\n\u003e are a temporary workaround before our Conda-forge release.\n\nFrom here, you can use the `weather-*` tools from your python environment. Currently, the following tools are available:\n\n- [⛈ `weather-dl`](weather_dl/README.md) (_beta_) – Download weather data (namely, from ECMWF's API).\n- [⛅️ `weather-mv`](weather_mv/README.md) (_alpha_) – Load weather data into analytics engines, like BigQuery.\n- [🌪 `weather-sp`](weather_sp/README.md) (_alpha_) – Split weather data by arbitrary dimensions.\n\n## Quickstart\n\nIn this tutorial, we will\ndownload the [Era 5 pressure level dataset](https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-pressure-levels?tab=overview)\nand ingest it into Google BigQuery using `weather-dl` and `weather-mv`, respectively.\n\n### Prerequisites\n\n1. [Register](https://cds.climate.copernicus.eu/user/register) for a license from\n   ECMWF's [Copernicus (CDS) API](https://cds.climate.copernicus.eu/api-how-to).\n2. Install your license by copying your API url \u0026 key from [this page](https://cds.climate.copernicus.eu/api-how-to#install-the-cds-api-key) to a new file `$HOME/.cdsapirc`.[^1] The file should look like this:\n   ```\n   url: https://cds.climate.copernicus.eu/api/v2\n   key: \u003cYOUR_USER_ID\u003e:\u003cYOUR_API_KEY\u003e\n   ```\n3. If you do not already have a Google Cloud project, create one by following\n   [these steps](https://cloud.google.com/docs/get-started). If you are working on\n   an existing project, make sure your user has the [BigQuery Admin role](https://cloud.google.com/bigquery/docs/access-control#bigquery.admin).\n   To learn more about granting IAM roles to users in Google Cloud, visit the\n   [official docs](https://cloud.google.com/iam/docs/granting-changing-revoking-access#grant-single-role).\n4. Create an empty BigQuery Dataset. This can be done using\n   the [Google Cloud Console](https://cloud.google.com/bigquery/docs/quickstarts/quickstart-cloud-console#create_a_dataset)\n   or via the [`bq` CLI tool](https://cloud.google.com/bigquery/docs/quickstarts/quickstart-command-line). \n   For example:\n   ```shell\n   bq mk --project_id=$PROJECT_ID $DATASET_ID\n   ```\n6. Follow [these steps](https://cloud.google.com/storage/docs/creating-buckets) \n   to create a bucket for staging temporary files in [Google Cloud Storage](https://cloud.google.com/storage).\n\n### Steps\n\nFor the purpose of this tutorial, we will use your local machine to run the\ndata pipelines. Note that all `weather-tools` can also be run in [Cloud Dataflow](https://cloud.google.com/dataflow)\nwhich is easier to scale and fully managed.\n\n1. Use `weather-dl` to download the *Era 5 pressure level* dataset.\n   ```bash\n   weather-dl configs/era5_example_config_local_run.cfg \\\n      --local-run # Use the local machine\n   ```\n\n   \u003e Recommendation: Pass the `-d, --dry-run` flag to any of these commands to preview the effects.\n\n   **NOTE:** By default, local downloads are saved to the `./local_run` directory unless another file system is specified.\n   The recommended output location for `weather-dl` is [Cloud Storage](https://cloud.google.com/storage).\n   The source and destination of the download are configured using the `.cfg` configuration file which is passed to the command.\n   To learn more about this configuration file's format and features,\n   see [this reference](Configuration.md). To learn more about the `weather-dl` command, visit [here](weather_dl/README.md).\n\n2. *(optional)* Split your downloaded dataset up with `weather-sp`:\n\n   ```shell\n    weather-sp --input-pattern \"./local_run/era5-*.nc\" \\\n       --output-dir \"split_data\" \n   ```\n\n   Visit the `weather-sp` [docs](weather_sp/README.md) for more information.\n\n3. Use `weather-mv` to ingest the downloaded data into BigQuery, in a structured format.\n\n   ```bash\n   weather-mv bigquery --uris \"./local_run/**.nc\" \\ # or \"./split_data/**.nc\" if weather-sp is used\n      --output_table \"$PROJECT.$DATASET_ID.$TABLE_ID\" \\ # The path to the destination BigQuery table\n      --temp_location \"gs://$BUCKET/tmp\" \\  # Needed for stage temporary files before writing to BigQuery\n      --direct_num_workers 2\n   ```\n\n   See [these docs](weather_mv/README.md) for more about the `weather-mv` command.\n\nThat's it! After the pipeline is completed, you should be able to query the ingested \ndataset in [BigQuery SQL workspace](https://cloud.google.com/bigquery/docs/bigquery-web-ui)\nand analyze it using [BigQuery ML](https://cloud.google.com/bigquery-ml/docs/introduction).\n\n## Contributing\n\nThe weather tools are under active development, and contributions are welcome! Please check out\nour [guide](CONTRIBUTING.md) to get started.\n\n## License\n\nThis is not an official Google product.\n\n```\nCopyright 2021 Google LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n[^1]: Note that you need to be logged in for the [CDS API page](https://cds.climate.copernicus.eu/api-how-to#install-the-cds-api-key) to actually show your user ID and API key. Otherwise, it will display a placeholder, which is confusing to some users.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["cloud-optimized","ecmwf","era5","open-science","zarr"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/861","html_url":"https://ost.ecosyste.ms/projects/861"}