{"id":1184,"name":"ecmwf-opendata","description":"A package to simplify the download of ECMWF open data.","url":"https://github.com/ecmwf/ecmwf-opendata","last_synced_at":"2026-04-28T17:00:57.657Z","repository":{"id":43468759,"uuid":"433860492","full_name":"ecmwf/ecmwf-opendata","owner":"ecmwf","description":"A package to download ECMWF open data","archived":false,"fork":false,"pushed_at":"2026-04-23T12:45:57.000Z","size":523,"stargazers_count":311,"open_issues_count":36,"forks_count":48,"subscribers_count":23,"default_branch":"main","last_synced_at":"2026-04-23T13:29:52.414Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ecmwf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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-12-01T14:30:59.000Z","updated_at":"2026-04-23T12:46:02.000Z","dependencies_parsed_at":"2023-09-21T19:47:03.690Z","dependency_job_id":"3f42fbd1-1807-4a1e-8394-94ce394a6380","html_url":"https://github.com/ecmwf/ecmwf-opendata","commit_stats":{"total_commits":130,"total_committers":5,"mean_commits":26.0,"dds":"0.12307692307692308","last_synced_commit":"8dc448cb8607f307384adfff0eeeb6a527a097a9"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/ecmwf/ecmwf-opendata","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/sbom","scorecard":{"id":365480,"data":{"date":"2025-08-11","repo":{"name":"github.com/ecmwf/ecmwf-opendata","commit":"922b26e779a14635494aa3b026c30c7cfef113d5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Maintained","score":5,"reason":"5 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dev.yml:1","Warn: no topLevel permission defined: .github/workflows/python-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":"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/dev.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/dev.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/dev.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/dev.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/dev.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/dev.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:48","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:80","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"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":"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":"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 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-18T11:45:53.774Z","repository_id":43468759,"created_at":"2025-08-18T11:45:53.774Z","updated_at":"2025-08-18T11:45:53.774Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32228437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":"ecmwf","name":"European Centre for Medium-Range Weather Forecasts","uuid":"6368067","kind":"organization","description":"Providing software to work with meteorological data and services","email":"Software.Support@ecmwf.int","website":"www.ecmwf.int","location":"Shinfield Park, Reading, United Kingdom","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6368067?v=4","repositories_count":44,"last_synced_at":"2023-03-02T03:00:24.789Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ecmwf","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-12T21:17:56.440Z","updated_at":"2023-03-02T03:00:24.855Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf/repositories"},"packages":[{"id":2720143,"name":"ecmwf-opendata","ecosystem":"pypi","description":"A package to download ECMWF open data","homepage":"https://github.com/ecmwf/ecmwf-opendata","licenses":"Apache License Version 2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/ecmwf/ecmwf-opendata","keywords_array":["tool"],"namespace":null,"versions_count":32,"first_release_published_at":"2021-12-01T20:36:20.000Z","latest_release_published_at":"2026-04-23T17:12:37.000Z","latest_release_number":"0.3.29","last_synced_at":"2026-04-26T16:00:38.352Z","created_at":"2022-04-10T10:51:29.119Z","updated_at":"2026-04-26T16:00:38.352Z","registry_url":"https://pypi.org/project/ecmwf-opendata/","install_command":"pip install ecmwf-opendata --index-url https://pypi.org/simple","documentation_url":"https://ecmwf-opendata.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy"],"normalized_name":"ecmwf-opendata","project_status":null},"repo_metadata":{"id":43468759,"uuid":"433860492","full_name":"ecmwf/ecmwf-opendata","owner":"ecmwf","description":"A package to download ECMWF open data","archived":false,"fork":false,"pushed_at":"2024-05-13T05:39:11.000Z","size":113,"stargazers_count":156,"open_issues_count":27,"forks_count":27,"subscribers_count":21,"default_branch":"main","last_synced_at":"2024-06-11T17:30:22.361Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ecmwf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2021-12-01T14:30:59.000Z","updated_at":"2024-06-12T18:31:09.216Z","dependencies_parsed_at":"2023-09-21T19:47:03.690Z","dependency_job_id":"3f42fbd1-1807-4a1e-8394-94ce394a6380","html_url":"https://github.com/ecmwf/ecmwf-opendata","commit_stats":{"total_commits":123,"total_committers":5,"mean_commits":24.6,"dds":"0.13008130081300817","last_synced_commit":"fdc807cff3f988ecba778e5b8920b6eedd6b2767"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":206983396,"owners_count":14652910,"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":"ecmwf","name":"European Centre for Medium-Range Weather Forecasts","uuid":"6368067","kind":"organization","description":"Providing software to work with meteorological data and services","email":"Software.Support@ecmwf.int","website":"www.ecmwf.int","location":"Shinfield Park, Reading, United Kingdom","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6368067?v=4","repositories_count":44,"last_synced_at":"2023-03-02T03:00:24.789Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ecmwf","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-12T21:17:56.440Z","updated_at":"2023-03-02T03:00:24.855Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf/repositories"},"tags":[{"name":"0.3.8","sha":"fdc807cff3f988ecba778e5b8920b6eedd6b2767","kind":"commit","published_at":"2024-04-30T08:07:29.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.8","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.8/manifests"},{"name":"0.3.7","sha":"82751bd227548f4cbcb2f4cf488707e625328e1d","kind":"commit","published_at":"2024-04-30T08:02:37.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.7","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.7/manifests"},{"name":"0.3.6","sha":"9232b84c06a6276f86c837b1b1e6cfc75bd02993","kind":"commit","published_at":"2024-04-30T07:14:49.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.6","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.6/manifests"},{"name":"0.3.5","sha":"04a35f081adf480c1e55b48abe22d3412d04f6cc","kind":"commit","published_at":"2024-04-30T07:04:03.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.5","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.5/manifests"},{"name":"0.3.4","sha":"970489c560d9e95284ce952476500948bc79fb64","kind":"commit","published_at":"2024-04-30T07:00:17.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.4","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.4/manifests"},{"name":"0.3.3","sha":"ffe7a477c32b51dd780998ee88af84d6e0897041","kind":"commit","published_at":"2024-03-04T14:06:49.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.3","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.3/manifests"},{"name":"0.3.1","sha":"7ade4c32e220867ba69658e045a01fa2c75e4f2d","kind":"commit","published_at":"2024-03-04T13:41:57.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.1","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.1/manifests"},{"name":"0.3.2","sha":"7ade4c32e220867ba69658e045a01fa2c75e4f2d","kind":"commit","published_at":"2024-03-04T13:41:57.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.2","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.2/manifests"},{"name":"0.3.0","sha":"7cc73beb0d04c22838b797b03c96cc47c7b423ee","kind":"commit","published_at":"2024-02-29T07:37:24.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.3.0","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.3.0/manifests"},{"name":"0.2.0","sha":"10070aa67c536fa3ab31ed7476f224d5ee54721f","kind":"commit","published_at":"2023-03-15T06:36:49.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.2.0","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.2.0/manifests"},{"name":"0.1.3","sha":"cb3d1c5813ba5fa94ef46b14e9993ae0b42b08b2","kind":"commit","published_at":"2023-03-14T07:41:15.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.1.3","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.3/manifests"},{"name":"0.1.2","sha":"ae4d015f628d13541a06eb2a04eef9c4a78e19f1","kind":"commit","published_at":"2023-01-20T16:47:18.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.1.2","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.2/manifests"},{"name":"0.1.1","sha":"c515d79b7dea043dccddfb52181aa90cc168b0ce","kind":"commit","published_at":"2022-02-28T23:59:48.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.1.1","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"3c8178432b1babba0f47be476c7982915d8e2ec2","kind":"commit","published_at":"2022-01-25T08:34:50.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.1.0","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.1.0/manifests"},{"name":"0.0.21","sha":"3170d04f50c8f5088541eb508e39c19e6319f2f0","kind":"commit","published_at":"2022-01-24T15:41:46.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.21","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.21/manifests"},{"name":"0.0.20","sha":"54fa795d77d56a04a996aaab29fee5b17d4ca5b5","kind":"commit","published_at":"2022-01-24T10:43:44.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.20","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.20/manifests"},{"name":"0.0.19","sha":"918b28d755e3748a1eb92786777b8e5c383c02f2","kind":"commit","published_at":"2022-01-24T09:59:13.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.19","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.19/manifests"},{"name":"0.0.18","sha":"52bdbc6491456ba7c3cf1bd1d54758b039828ebe","kind":"commit","published_at":"2022-01-24T09:56:05.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.18","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.18/manifests"},{"name":"0.0.17","sha":"f065fc3f1d9b5351c02816d594f0ac25b85e0b1c","kind":"commit","published_at":"2022-01-22T13:39:07.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.17","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.17/manifests"},{"name":"0.0.16","sha":"aa2bdb8cf79d144d5a8cafcd01ed502eb404f130","kind":"commit","published_at":"2022-01-22T13:20:22.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.16","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.16/manifests"},{"name":"0.0.15","sha":"491111a42aa3018eb22d6488bd49283744592fb9","kind":"commit","published_at":"2022-01-22T13:14:25.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.15","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.15/manifests"},{"name":"0.0.14","sha":"0cbdddffa3b523fc72f5376e23916402ece9888d","kind":"commit","published_at":"2022-01-22T12:19:44.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.14","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.14/manifests"},{"name":"0.0.13","sha":"13fb8ef987e2dcad1ee85bc2006efc55e3fc7562","kind":"commit","published_at":"2022-01-20T14:50:25.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.13","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.13/manifests"},{"name":"0.0.12","sha":"a08dd2b0107b02d3e8dae20f1f17f2d7f62b7327","kind":"commit","published_at":"2022-01-19T10:49:36.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.12","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.12/manifests"},{"name":"0.0.11","sha":"63ad406489593cff2fbb3703e8685ff3f9410a2d","kind":"commit","published_at":"2022-01-19T08:25:55.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.11","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.11/manifests"},{"name":"0.0.10","sha":"ac93710597f9ed633eeb762388b7ac27d2594fa5","kind":"commit","published_at":"2022-01-19T08:22:50.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.10","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.10/manifests"},{"name":"0.0.9","sha":"6f0318687abb3294af422bb82d86ed2dc4104207","kind":"commit","published_at":"2022-01-17T10:59:26.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.9","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.9/manifests"},{"name":"0.0.8","sha":"ababb83a34560adcf190ce8a8472e32ddaf1ee02","kind":"commit","published_at":"2022-01-14T10:24:44.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.8","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.8/manifests"},{"name":"0.0.7","sha":"941380dc9c77cfd5f6f4afa8781be7fd451f9eac","kind":"commit","published_at":"2022-01-12T17:03:48.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.7","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.7/manifests"},{"name":"0.0.4","sha":"5e435a240ecccc46dc69d3f31df01151776c091b","kind":"commit","published_at":"2021-12-15T13:18:23.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.4","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.4/manifests"},{"name":"0.0.3","sha":"1fae145a1248a6c889297445601627eaa89472d5","kind":"commit","published_at":"2021-12-03T17:11:12.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.3","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.3/manifests"},{"name":"0.0.2","sha":"df5aba55d27ac050b1916c7945f296ffc9d051c4","kind":"commit","published_at":"2021-12-01T20:41:08.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.2","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.2/manifests"},{"name":"0.0.1","sha":"010d4f0773ca9245f7d98fd158a44864c9b97c8c","kind":"commit","published_at":"2021-12-01T20:31:59.000Z","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/0.0.1","html_url":"https://github.com/ecmwf/ecmwf-opendata/releases/tag/0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags/0.0.1/manifests"}]},"repo_metadata_updated_at":"2024-10-29T16:16:57.952Z","dependent_packages_count":3,"downloads":81373,"downloads_period":"last-month","dependent_repos_count":8,"rankings":{"downloads":4.0147977439505125,"dependent_repos_count":5.2524469804593785,"dependent_packages_count":7.306363177401113,"stargazers_count":6.9058022200785425,"forks_count":9.606898886386361,"docker_downloads_count":3.6288247460605385,"average":6.119188959056075},"purl":"pkg:pypi/ecmwf-opendata","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/ecmwf-opendata","docker_dependents_count":1,"docker_downloads_count":11,"usage_url":"https://repos.ecosyste.ms/usage/pypi/ecmwf-opendata","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/ecmwf-opendata/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T14:30:32.185Z","issues_count":43,"pull_requests_count":10,"avg_time_to_close_issue":2618347.6666666665,"avg_time_to_close_pull_request":630952.8571428572,"issues_closed_count":15,"pull_requests_closed_count":7,"pull_request_authors_count":7,"issue_authors_count":37,"avg_comments_per_issue":1.2325581395348837,"avg_comments_per_pull_request":1.0,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":22,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":696801.5,"past_year_avg_time_to_close_pull_request":44729.0,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":20,"past_year_avg_comments_per_issue":1.2272727272727273,"past_year_avg_comments_per_pull_request":0.6666666666666666,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/issues","maintainers":[{"login":"floriankrb","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floriankrb"},{"login":"milanavuckovic","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/milanavuckovic"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ecmwf-opendata/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ecmwf-opendata/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ecmwf-opendata/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ecmwf-opendata/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/ecmwf-opendata/codemeta","maintainers":[{"uuid":"braoult","login":"braoult","name":null,"email":null,"url":null,"packages_count":20,"html_url":"https://pypi.org/user/braoult/","role":null,"created_at":"2023-02-24T03:32:47.489Z","updated_at":"2023-02-24T03:32:47.489Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/braoult/packages"},{"uuid":"ecmwf","login":"ecmwf","name":null,"email":null,"url":null,"packages_count":107,"html_url":"https://pypi.org/user/ecmwf/","role":null,"created_at":"2023-02-24T03:32:47.502Z","updated_at":"2023-02-24T03:32:47.502Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ecmwf/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":851677,"maintainers_count":363951,"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"}},{"id":9205165,"name":"py-ecmwf-opendata","ecosystem":"spack","description":"A package to download ECMWF open data.\n","homepage":"https://github.com/ecmwf/ecmwf-opendata","licenses":"[]","normalized_licenses":["Other"],"repository_url":"https://github.com/ecmwf/ecmwf-opendata","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2024-03-13T00:08:49.554Z","latest_release_published_at":"2024-03-13T00:08:49.554Z","latest_release_number":"0.3.3","last_synced_at":"2026-04-26T16:00:38.734Z","created_at":"2024-03-13T00:08:47.940Z","updated_at":"2026-04-26T16:00:38.734Z","registry_url":"https://packages.spack.io/package.html?name=py-ecmwf-opendata","install_command":"spack install py-ecmwf-opendata","documentation_url":null,"metadata":{},"repo_metadata":{"id":43468759,"uuid":"433860492","full_name":"ecmwf/ecmwf-opendata","owner":"ecmwf","description":"A package to download ECMWF open data","archived":false,"fork":false,"pushed_at":"2025-10-28T14:54:10.000Z","size":522,"stargazers_count":270,"open_issues_count":32,"forks_count":43,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-11-14T15:26:08.862Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ecmwf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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-12-01T14:30:59.000Z","updated_at":"2025-11-10T15:27:09.000Z","dependencies_parsed_at":"2023-09-21T19:47:03.690Z","dependency_job_id":"3f42fbd1-1807-4a1e-8394-94ce394a6380","html_url":"https://github.com/ecmwf/ecmwf-opendata","commit_stats":{"total_commits":130,"total_committers":5,"mean_commits":26.0,"dds":"0.12307692307692308","last_synced_commit":"8dc448cb8607f307384adfff0eeeb6a527a097a9"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/ecmwf/ecmwf-opendata","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf","download_url":"https://codeload.github.com/ecmwf/ecmwf-opendata/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/sbom","scorecard":{"id":365480,"data":{"date":"2025-08-11","repo":{"name":"github.com/ecmwf/ecmwf-opendata","commit":"922b26e779a14635494aa3b026c30c7cfef113d5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Maintained","score":5,"reason":"5 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dev.yml:1","Warn: no topLevel permission defined: .github/workflows/python-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":"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/dev.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/dev.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/dev.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/ecmwf/ecmwf-opendata/python-publish.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/dev.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/dev.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/dev.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:48","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:80","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"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":"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":"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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 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-18T11:45:53.774Z","repository_id":43468759,"created_at":"2025-08-18T11:45:53.774Z","updated_at":"2025-08-18T11:45:53.774Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284530944,"owners_count":27021188,"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-11-15T02:00:06.050Z","response_time":57,"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":"ecmwf","name":"European Centre for Medium-Range Weather Forecasts","uuid":"6368067","kind":"organization","description":"Providing software to work with meteorological data and services","email":"Software.Support@ecmwf.int","website":"www.ecmwf.int","location":"Shinfield Park, Reading, United Kingdom","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6368067?v=4","repositories_count":44,"last_synced_at":"2023-03-02T03:00:24.789Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ecmwf","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-12T21:17:56.440Z","updated_at":"2023-03-02T03:00:24.855Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ecmwf/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-11-23T13:02:22.002Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":55.61344746309391,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":27.806723731546956},"purl":"pkg:spack/py-ecmwf-opendata","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/spack/py-ecmwf-opendata","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/spack/py-ecmwf-opendata","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/spack/py-ecmwf-opendata/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-28T18:00:28.802Z","issues_count":48,"pull_requests_count":34,"avg_time_to_close_issue":7662006.4375,"avg_time_to_close_pull_request":5730077.827586207,"issues_closed_count":16,"pull_requests_closed_count":29,"pull_request_authors_count":11,"issue_authors_count":41,"avg_comments_per_issue":1.3333333333333333,"avg_comments_per_pull_request":0.7352941176470589,"merged_pull_requests_count":23,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":22,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":75461.77777777778,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":18,"past_year_pull_request_authors_count":6,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":2.0,"past_year_avg_comments_per_pull_request":0.36363636363636365,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":18,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/issues","maintainers":[{"login":"floriankrb","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floriankrb"},{"login":"awarde96","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/awarde96"},{"login":"iainrussell","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/iainrussell"},{"login":"milanavuckovic","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/milanavuckovic"},{"login":"gmertes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmertes"}],"active_maintainers":[{"login":"awarde96","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/awarde96"},{"login":"floriankrb","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floriankrb"},{"login":"iainrussell","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/iainrussell"},{"login":"gmertes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmertes"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-ecmwf-opendata/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-ecmwf-opendata/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-ecmwf-opendata/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-ecmwf-opendata/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages/py-ecmwf-opendata/codemeta","maintainers":[],"registry":{"name":"spack.io","url":"https://packages.spack.io","ecosystem":"spack","default":true,"packages_count":9098,"maintainers_count":978,"namespaces_count":0,"keywords_count":0,"github":"spack","metadata":{"funded_packages_count":437},"icon_url":"https://github.com/spack.png","created_at":"2022-04-04T15:19:23.514Z","updated_at":"2026-04-03T06:48:03.381Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/spack.io/namespaces"}}],"commits":{"id":572354,"full_name":"ecmwf/ecmwf-opendata","default_branch":"main","total_commits":155,"total_committers":11,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":14.090909090909092,"dds":0.2645161290322581,"past_year_total_commits":15,"past_year_total_committers":4,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":3.75,"past_year_dds":0.19999999999999996,"last_synced_at":"2026-04-26T16:00:31.881Z","last_synced_commit":"aa24f66f5d914ac4c4c1bd11803b8a24cda40ee0","created_at":"2023-03-09T05:28:55.380Z","updated_at":"2026-04-26T16:00:31.528Z","committers":[{"name":"Baudouin Raoult","email":"baudouin.raoult@ecmwf.int","login":"b8raoult","count":114},{"name":"Florian Pinault","email":"floriankrb","login":"floriankrb","count":13},{"name":"Adam Warde","email":"adamjwarde@gmail.com","login":"awarde96","count":12},{"name":"Gert Mertes","email":"hey@gertmertes.be","login":"gmertes","count":4},{"name":"palewire","email":"b@palewi.re","login":"palewire","count":3},{"name":"Paul Dando","email":"paul.dando@ecmwf.int","login":"pdando","count":3},{"name":"milanavuckovic","email":"44368504+milanavuckovic","login":"milanavuckovic","count":2},{"name":"Luke Conibear","email":"106694834+luke-conibear","login":"luke-conibear","count":1},{"name":"Juniper Tyree","email":"50025784+juntyr","login":"juntyr","count":1},{"name":"Iain Russell","email":"40060766+iainrussell","login":"iainrussell","count":1},{"name":"Harrison Cook","email":"Harrison.cook@ecmwf.int","login":"HCookie","count":1}],"past_year_committers":[{"name":"Adam Warde","email":"adamjwarde@gmail.com","login":"awarde96","count":12},{"name":"Luke Conibear","email":"106694834+luke-conibear","login":"luke-conibear","count":1},{"name":"Harrison Cook","email":"Harrison.cook@ecmwf.int","login":"HCookie","count":1},{"name":"Ben Welsh","email":"b@palewi.re","login":"palewire","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-28T00:00:07.369Z","repositories_count":6221087,"commits_count":900101262,"contributors_count":34897940,"owners_count":1146657,"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":"ecmwf/ecmwf-opendata","html_url":"https://github.com/ecmwf/ecmwf-opendata","last_synced_at":"2026-04-24T15:01:02.387Z","status":"active","issues_count":55,"pull_requests_count":39,"avg_time_to_close_issue":7508232.35,"avg_time_to_close_pull_request":5201480.90625,"issues_closed_count":20,"pull_requests_closed_count":32,"pull_request_authors_count":12,"issue_authors_count":45,"avg_comments_per_issue":1.2181818181818183,"avg_comments_per_pull_request":0.6923076923076923,"merged_pull_requests_count":26,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":10,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":6893136.0,"past_year_avg_time_to_close_pull_request":64690.555555555555,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":8,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":0.21428571428571427,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"created_at":"2023-05-09T10:39:24.534Z","updated_at":"2026-04-24T15:01:02.387Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ecmwf%2Fecmwf-opendata/issues","issue_labels_count":{"enhancement":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":53,"CONTRIBUTOR":2},"pull_request_author_associations_count":{"MEMBER":15,"COLLABORATOR":13,"NONE":7,"CONTRIBUTOR":4},"issue_authors":{"martimfj":4,"guidocioni":3,"samdoolin":2,"notoriusjack":2,"sgana1":2,"theweatherguy":2,"palewire":2,"Alley0911":1,"benjamingorman":1,"Darivo-cmd":1,"briwg":1,"Koaosa":1,"Edudiro":1,"daihaozxn":1,"efesurekli":1,"weatherforecasterwhai":1,"Bing1996":1,"carminelau":1,"psuchuck":1,"packman2008":1,"djzurawski":1,"psungkyu":1,"Tristanjmeyers":1,"winnerhash":1,"aperaza-bsc":1,"samwisehawkins":1,"colintully":1,"manfredsc":1,"MarleneBs":1,"sailgrib":1,"steph-ben":1,"eldertiger":1,"miwxmann":1,"TeunZoer":1,"Dadoof":1,"CalipsoAdara":1,"david5010":1,"rahanozturk2":1,"glb-1945":1,"micrat":1,"HongLouyemeng":1,"hammad93":1,"csteele2":1,"swarnalee-m":1,"DaiDai-Dad":1},"pull_request_authors":{"awarde96":12,"floriankrb":11,"palewire":3,"juntyr":2,"iainrussell":2,"packman2008":2,"NickGeneva":2,"milanavuckovic":1,"jameshawkes":1,"HCookie":1,"guidocioni":1,"gmertes":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-26T00:00:11.126Z","repositories_count":14417914,"issues_count":34459616,"pull_requests_count":112741396,"authors_count":11246190,"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":{},"past_year_issue_author_associations_count":{"NONE":9,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":12,"CONTRIBUTOR":1,"MEMBER":1},"past_year_issue_authors":{"guidocioni":2,"samdoolin":2,"Alley0911":1,"briwg":1,"colintully":1,"miwxmann":1,"palewire":1,"Tristanjmeyers":1},"past_year_pull_request_authors":{"awarde96":12,"HCookie":1,"palewire":1},"maintainers":[{"login":"awarde96","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/awarde96"},{"login":"floriankrb","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/floriankrb"},{"login":"iainrussell","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/iainrussell"},{"login":"milanavuckovic","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/milanavuckovic"},{"login":"gmertes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmertes"},{"login":"HCookie","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/HCookie"}],"active_maintainers":[{"login":"awarde96","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/awarde96"},{"login":"HCookie","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/HCookie"}]},"events":{"total":{"ReleaseEvent":10,"DeleteEvent":2,"MemberEvent":1,"PullRequestEvent":23,"ForkEvent":10,"IssuesEvent":8,"WatchEvent":75,"IssueCommentEvent":24,"PushEvent":24,"PullRequestReviewCommentEvent":1,"PullRequestReviewEvent":4,"CreateEvent":19},"last_year":{"ReleaseEvent":2,"DeleteEvent":2,"PullRequestEvent":8,"ForkEvent":5,"IssuesEvent":3,"WatchEvent":38,"IssueCommentEvent":15,"PushEvent":13,"PullRequestReviewCommentEvent":1,"PullRequestReviewEvent":4,"CreateEvent":6}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-29T22:01:31.644Z","updated_at":"2022-08-29T22:01:31.644Z","repository_link":"https://github.com/ecmwf/ecmwf-opendata/blob/main/setup.py","dependencies":[{"id":3221979558,"package_name":"multiurl","ecosystem":"pypi","requirements":"\u003e=0.0.14","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"tests/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-29T22:01:31.735Z","updated_at":"2022-08-29T22:01:31.735Z","repository_link":"https://github.com/ecmwf/ecmwf-opendata/blob/main/tests/requirements.txt","dependencies":[{"id":3221982132,"package_name":"freezegun","ecosystem":"pypi","requirements":"*","direct":true,"kind":"test","optional":false},{"id":3221982133,"package_name":"ecmwflibs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"test","optional":false},{"id":3221982134,"package_name":"eccodes","ecosystem":"pypi","requirements":"*","direct":true,"kind":"test","optional":false}]},{"ecosystem":"pypi","filepath":"tools/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-29T22:01:31.983Z","updated_at":"2022-08-29T22:01:31.983Z","repository_link":"https://github.com/ecmwf/ecmwf-opendata/blob/main/tools/requirements.txt","dependencies":[{"id":3221982171,"package_name":"beautifulsoup4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/dev.yml","sha":null,"kind":"manifest","created_at":"2023-02-12T21:15:14.760Z","updated_at":"2023-02-12T21:15:14.760Z","repository_link":"https://github.com/ecmwf/ecmwf-opendata/blob/main/.github/workflows/dev.yml","dependencies":[{"id":7597538531,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7597538535,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python-publish.yml","sha":null,"kind":"manifest","created_at":"2023-02-12T21:15:14.894Z","updated_at":"2023-02-12T21:15:14.894Z","repository_link":"https://github.com/ecmwf/ecmwf-opendata/blob/main/.github/workflows/python-publish.yml","dependencies":[{"id":7597538919,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7597538920,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":19.554326034409442,"created_at":"2023-09-11T11:54:37.215Z","updated_at":"2026-04-28T17:00:57.675Z","avatar_url":"https://github.com/ecmwf.png","language":"Python","category":"Climate Change","sub_category":"Climate Data Access and Visualization","monthly_downloads":81373,"total_dependent_repos":8,"total_dependent_packages":3,"readme":"# ecmwf-opendata\n\n`ecmwf-opendata` is a package to simplify the download of ECMWF [open data](https://www.ecmwf.int/en/forecasts/datasets/open-data). It implements a request-based interface to the dataset using ECMWF's MARS language to select meteorological fields, similar to the existing  [ecmwf-api-client](https://github.com/ecmwf/ecmwf-api-client) Python package.\n\nA collection of Jupyter Notebooks that make use of that package is available [here](https://github.com/ecmwf/notebook-examples/tree/master/opencharts).\n\n## Installation\n\nThe `ecmwf-opendata` Python package can be installed from PyPI with:\n\n```$ pip install ecmwf-opendata```\n\n## Usage\nThe example below will download the latest available 10-day forecast for the *mean sea level pressure* (`msl`) into a local file called `data.grib2`:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client()\n\nclient.retrieve(\n    step=240,\n    type=\"fc\",\n    param=\"msl\",\n    target=\"data.grib2\",\n)\n```\n\n\u003e ❗ **NOTE:** This package is designed for users that want to download a subset of the whole dataset. If you plan to download a large percentage of each data file, it may be more efficient to download whole files and filter out the data you want locally. See the documentation on the [file naming convention](https://confluence.ecmwf.int/display/DAC/ECMWF+open+data%3A+real-time+forecasts+from+IFS+and+AIFS) for more information. Alternatively, you can use this tool to download whole files by only specifying `date`, `time`, `step`, `stream` and `type`. Please be aware that all data for a full day is in the order of 726 GiB.\n\n\n## Options\n\nThe constructor of the client object takes the following options:\n\n```python\nclient = Client(\n    source=\"ecmwf\",\n    model=\"ifs\",\n    resol=\"0p25\",\n    preserve_request_order=False,\n    infer_stream_keyword=True,\n)\n```\n\nwhere:\n\n- `source` is either the name of server to contact or a fully qualified URL. Possible values are `ecmwf` to access ECMWF's servers, `aws` for data hosted by Amazon Web Services, `google` for data hosted on Google Cloud Platform, or `azure` to access data hosted on Microsoft's Azure. Default is `ecmwf`.\n\n \u003e ⚠️ **Warning:** `source=ecmwf` To ensure the stability of our systems and to preserve resources for our operational activities (network, compute, etc.), access to the open-data portal is limited to 500 simultaneous connections. This limit helps us guarantee reliable service for our operational users, especially during periods of high demand. For added reliability, the open-data is replicated across AWS, Azure, and Google Cloud. If you experience difficulties accessing the portal directly, you can also retrieve the data from these cloud platforms.\n\n \u003e ⚠️ **NOTE:** The source `azure` generates an sas token for the user during retrieval. More information about the sas key can be found here [sas tokens](https://confluence.ecmwf.int/display/DAC/ECMWF+open+data%3A+real-time+forecasts+from+IFS+and+AIFS).\n\n- `model` is the name of the model that produced the data. Use `ifs` for the physics-driven model, `aifs-single` for the data-driven model, and `aifs-ens` for the ensemble data-driven model. Default is `ifs`.\n\n- `resol` specifies the resolution of the data. Default is `0p25` for 0.25 degree resolution, and is the only resolution that is currently available.\n\n- `preserve_request_order`. If this flag is set to `True`, the library will attempt to write the retrieved data into the target file in the order specified by the request. For example, if the request specifies `param=[2t,msl]` the library will ensure that the field `2t` is first in the target file, while with `param=[msl,2t]`, the field `msl` will be first. This also works across different keywords: `...,levelist=[500,100],param=[z,t],...` will produce different output to `...,param=[z,t],levelist=[500,100],...`\nIf the flag is set to `False`, the library will sort the request to minimise the number of HTTP requests made to the server, leading to faster download speeds. Default is `False`.\n\n- `infer_stream_keyword`. The `stream` keyword represents the ECMWF forecasting system that creates the data. Setting it properly requires knowledge of how ECMWF runs its operations. If this boolean is set to `True`, the library will try to infer the correct value for the `stream` keyword based on the rest of the request. Default is `True` if model is `ifs`.\n\n \u003e ⚠️ **NOTE:** It is recommended **not** to set the `preserve_request_order` flag to `True` when downloading a large number of fields as this will add extra load on the servers.\n\n## Methods\n\n\u003e `Client.retrieve()`\n\nThe `Client.retrieve()` method takes request as input and will retrieve the corresponding data from the server and write them in the user's target file.\n\nA request is a list of keyword/value pairs used to select the desired data. It is possible to specify a list of values for a given keyword.\n\nThe request can either be specified as a dictionary:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nrequest = {\n    \"time\": 0,\n    \"type\": \"fc\",\n    \"step\": 24,\n    \"param\": [\"2t\", \"msl\"],\n}\n\nclient.retrieve(request, \"data.grib2\")\n\n# or:\n\nclient.retrieve(\n    request=request,\n    target=\"data.grib2\",\n)\n```\n\nor directly as arguments to the `retrieve()` method:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    type=\"fc\",\n    step=24,\n    param=[\"2t\", \"msl\"],\n    target=\"data.grib2\",\n)\n```\n\nThe `date` and `time` keyword are used to select the date and time of the forecast run (see [Date and time](#date-and-time) below). If `date` or both `date` and `time` are not specified, the library will query the server for the most recent matching data. The `date` and `time` of the downloaded forecast is returned by the `retrieve()` method.\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nresult = client.retrieve(\n    type=\"fc\",\n    step=24,\n    param=[\"2t\", \"msl\"],\n    target=\"data.grib2\",\n)\n\nprint(result.datetime)\n```\n\nmay print `2022-01-23 00:00:00`.\n\n\u003e `Client.download()`\n\nThe `Client.download()` method takes the same parameters as the `Client.retrieve()` method, but will download the whole data files from the server, ignoring keywords like `param`, `levelist` or `number`.\n\nThe example below will download all field from the latest time step 24, ignoring the keyword `param`:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.download(\n    param=\"msl\",\n    type=\"fc\",\n    step=24,\n    target=\"data.grib2\",\n)\n\n```\n\n\u003e `Client.latest()`\n\nThe `Client.latest()` method takes the same parameters as the `Client.retrieve()` method, and returns the date of the most recent matching forecast without downloading the data:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nprint(client.latest(\n    type=\"fc\",\n    step=24,\n    param=[\"2t\", \"msl\"],\n    target=\"data.grib2\",\n))\n```\n\nmay print `2022-01-23 00:00:00`.\n\n\u003e ⏰ **NOTE**: The data is available between 7 and 9 hours after the forecast starting date and time, depending on the forecasting system and the time step specified.\n\n## Request keywords\n\nThe supported keywords are:\n\n- `type`: the type of data (compulsory, defaults to `fc`).\n- `stream`: the forecast system (optional if unambiguous, compulsory otherwise). See the `infer_stream_keyword` [above](#options).\n- `date`: the date at which the forecast starts.\n- `time`: the time at which the forecast starts.\n- `step`: the forecast time step in hours, or `fcmonth`, the time step in months for the seasonal forecast (compulsory, default to `0` and `1`, respectively).\n\nand (all optional, with no defaults):\n\n- `param`: the meteorological parameters, such as wind, pressure or humidity.\n- `levtype`: select between single level parameters and parameters on pressure levels.\n- `levelist`: the list of pressure levels when relevant.\n- `number`: the list of ensemble member numbers when relevant.\n\nThe keywords in the first list are used to identify which file to access, while the second list is used to identify which parts of the files need to be actually downloaded. Some HTTP servers are able to return multiple parts of a file, while other can only return a single part from a file. In the latter case, the library may perform many HTTP requests to the server. If you wish to download whole files, only provide keywords from the first list.\n\n### Date and time\n\nThe date and time parameters refer to the starting time of the forecast. All date and time are expressed in UTC.\n\nThere are several ways to specify the date and time in a request.\n\nDate can be specified using strings, numbers and Python `datetime.datetime` or `datetime.date` objects:\n\n```python\n...\n    date='20220125',\n    time=12,\n...\n    date='2022-01-25',\n    time=12,\n...\n    date='2022-01-25 12:00:00',\n...\n    date=20220125,\n    time=12,\n...\n    date=datetime.datetime(2022, 1, 25, 12, 0, 0),\n...\n    date=datetime.date(2022, 1, 25),\n    time=12,\n...\n```\n\nDates can also be given as a number less than or equal to zero. In this case, it is equivalent to the current UTC date minus the given number of days:\n\n```python\n...\n    date=0, # today\n    date=-1, # yesterday\n    date=-2, # the day before yesterday\n...\n```\n\nThe keyword `time` can be given as a string or an integer, or a Python `datetime.time` object. All values of time below are equivalent:\n\n```python\n...\n    time=12,\n...\n    time=1200,\n...\n    time='12',\n...\n    time='1200',\n...\n    time=datetime.time(12),\n...\n```\n\n| List of valid values for time |\n| ----------------------------- |\n| 0, 6, 12 and 18 |\n\nIf `time` is not specified, the time is extracted from the date.\n\n```python\n...\n   date='2022-01-25 12:00:00',\n...\n```\n\nis equivalent to:\n\n```python\n...\n   date='2022-01-25',\n   time=12,\n...\n```\n\nIf the `time` keyword is specified, it overrides any time given in the request.\n\n```python\n...\n   date='2022-01-25 12:00:00',\n   time=18,\n...\n```\n\nis equivalent to:\n\n```python\n...\n   date='2022-01-25',\n   time=18,\n...\n```\n\nAs stated before, if `date` or both `date` and `time` are not specified, the library will query the server for the most recent matching data. The `date` and `time` of the downloaded forecast is returned by the `retrieve()` method:\n\nExample without the `date` keyword:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nresult = client.retrieve(\n    time=12,\n    type=\"fc\",\n    param=\"2t\",\n    step=\"24\",\n    target=\"data.grib2\",\n)\n\nprint(result.datetime)\n\n```\n\nwill print `2022-01-22 12:00:00` if run in the morning of 2022-01-23.\n\nExample without the `date` and `time` keywords:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nresult = client.retrieve(\n    type=\"fc\",\n    param=\"2t\",\n    step=\"24\",\n    target=\"data.grib2\",\n)\n\nprint(result.datetime)\n\n```\n\nwill print `2022-01-23 00:00:00` if run in the morning of 2022-01-23.\n\n### Stream and type\n\nECMWF runs several forecasting systems:\n\n- [HRES](https://confluence.ecmwf.int/display/FUG/HRES+-+High-Resolution+Forecast): High Resolution Forecast.\n- [ENS](https://confluence.ecmwf.int/display/FUG/ENS+-+Ensemble+Forecasts): Ensemble Forecasts.\n- [SEAS](https://confluence.ecmwf.int/display/FUG/Long-Range+%28Seasonal%29+Forecast): Long-Range (Seasonal) Forecast.\n\nEach of these forecasts also produces several types of products, that are referred to using the keywords\n`stream` and `type`.\n\n\u003e Valid values for `type` are:\n\nHRES:\n\n- `fc`: Forecast.\n\nENS:\n\n- `cf`: Control forecast.\n- `pf`: Perturbed forecast.\n- `em`: Ensemble mean.\n- `es`: Ensemble standard deviation.\n- `ep`: Probabilities.\n\n\u003e Valid values for `stream` are:\n\n- `oper`: Atmospheric fields from HRES - 00 UTC and 12 UTC.\n- `wave`: Ocean wave fields from HRES - 00 UTC and 12 UTC.\n- `enfo`: Atmospheric fields from ENS.\n- `waef`: Ocean wave fields from ENS.\n- `scda`: Atmospheric fields from HRES - 06 UTC and 18 UTC.\n- `scwv`: Ocean wave fields from HRES - 06 UTC and 18 UTC.\n\n\u003e 📌 **NOTE**: if the client's flag [`infer_stream_keyword`](#options) is set to `True`, the library will infer the stream from the `type` and `time`. In that case, you just need to specify `stream=wave` to access ocean wave products, and don't provide a value for `stream` in other cases.\n\n### Time steps\n\nTo select a time step, use the `step` keyword:\n\n```python\n...\n   step=24,\n...\n   step=[24, 48],\n...\n```\n\n| Forecasting system | Time | List of time steps |\n| -------- | ---- | ------------------ |\n| HRES | 00 and 12 | 0 to 144 by 3, 144 to 240 by 6 |\n| ENS | 00 and 12 | 0 to 144 by 3, 144 to 360 by 6 |\n| HRES | 06 and 18 | 0 to 90 by 3 |\n| ENS | 06 and 18 | 0 to 144 by 3 |\n| Probabilities - Instantaneous weather events | 00 and 12 | 0 to 360 by 12 |\n| Probabilities - Daily weather events | 00 and 12 | 0-24 to 336-360 by 12 |\n\n\u003e 📌 **NOTE**: Not specifying `step` will return all available time steps.\n\n### Parameters and levels\n\nTo select a parameter, use the `param` keyword:\n\n```python\n...\n   param=\"msl\",\n...\n   param=[\"2t\", \"msl\"]\n...\n```\n\nfor pressure level parameters, use the `levelist` keyword:\n\n```python\n...\n   param=\"t\",\n   levelist=850,\n...\n   param=[\"u\", \"v\"],\n   levelist=[1000, 850, 500],\n...\n```\n\n\u003e 📌 **NOTE**: Not specifying `levelist` will return all available levels, and not specifying `param` will return all available parameters.\n\n| List of pressure levels (hPa) |\n| ----------------------------- |\n|   1000, 925, 850, 700, 500, 300, 250, 200 and 50 |\n\n\nBelow is the list of all parameters:\n\n\u003e Atmospheric fields on pressure levels\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| d | Divergence | s\u003csup\u003e-1\u003c/sup\u003e |\n| gh | Geopotential height | gpm |\n| q | Specific humidity | kg kg\u003csup\u003e-1\u003c/sup\u003e |\n| r | Relative humidity | % |\n| t | Temperature | K |\n| u | U component of wind | m s\u003csup\u003e-1\u003c/sup\u003e |\n| v | V component of wind | m s\u003csup\u003e-1\u003c/sup\u003e |\n| vo | Vorticity (relative) | s\u003csup\u003e-1\u003c/sup\u003e |\n\n\u003e Atmospheric fields on a single level\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| 10u | 10 metre U wind component | m s\u003csup\u003e-1\u003c/sup\u003e |\n| 10v | 10 metre V wind component | m s\u003csup\u003e-1\u003c/sup\u003e |\n| 2t | 2 metre temperature | K |\n| msl | Mean sea level pressure | Pa |\n| ro | Runoff | m |\n| skt | Skin temperature | K |\n| sp | Surface pressure | Pa |\n| st | Soil Temperature | K |\n| stl1 | Soil temperature level 1 | K |\n| tcwv | Total column vertically-integrated water vapour | kg m\u003csup\u003e-2\u003c/sup\u003e |\n| tp | Total Precipitation | m |\n\n\u003e Ocean waves fields\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| mp2 | Mean zero-crossing wave period | s |\n| mwd | Mean wave direction | Degree true |\n| mwp | Mean wave period | s |\n| pp1d | Peak wave period | s |\n| swh | Significant height of combined wind waves and swell | m |\n\n\u003e Ensemble mean and standard deviation - pressure levels\n\n| Parameter | Description | Units | Levels |\n| --------- | ----------- | ----- | ------ |\n| gh | Geopotential height | gpm | 300, 500, 1000 |\n| t | Temperature | K | 250, 500, 850 |\n| ws | Wind speed | m s\u003csup\u003e-1\u003c/sup\u003e | 250, 850 |\n\n\u003e Ensemble mean and standard deviation - single level\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| msl | Mean sea level pressure | Pa |\n\n\u003e Instantaneous weather events - atmospheric fields - 850 hPa\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| ptsa_gt_1p5stdev | Probability of temperature standardized anomaly greater than 1.5 standard deviation | % |\n| ptsa_gt_1stdev | Probability of temperature standardized anomaly greater than 1 standard deviation | % |\n| ptsa_gt_2stdev | Probability of temperature standardized anomaly greater than 2 standard deviation | % |\n| ptsa_lt_1p5stdev | Probability of temperature standardized anomaly less than -1.5 standard deviation | % |\n| ptsa_lt_1stdev | Probability of temperature standardized anomaly less than -1 standard deviation | % |\n| ptsa_lt_2stdev | Probability of temperature standardized anomaly less than -2 standard deviation | % |\n\n\u003e Daily weather events - atmospheric fields - single level\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| 10fgg10 | 10 metre wind gust of at least 10 m/s | % |\n| 10fgg15 | 10 metre wind gust of at least 15 m/s | % |\n| 10fgg25 | 10 metre wind gust of at least 25 m/s | % |\n| tpg1 | Total precipitation of at least 1 mm | % |\n| tpg10 | Total precipitation of at least 10 mm | % |\n| tpg100 | Total precipitation of at least 100 mm | % |\n| tpg20 | Total precipitation of at least 20 mm | % |\n| tpg25 | Total precipitation of at least 25 mm | % |\n| tpg5 | Total precipitation of at least 5 mm | % |\n| tpg50 | Total precipitation of at least 50 mm | % |\n\n\u003e Instantaneous weather events - ocean waves fields\n\n| Parameter | Description | Units |\n| --------- | ----------- | ----- |\n| swhg2 | Significant wave height of at least 2 m | % |\n| swhg4 | Significant wave height of at least 4 m | % |\n| swhg6 | Significant wave height of at least 6 m | % |\n| swhg8 | Significant wave height of at least 8 m | % |\n\n### Ensemble numbers\n\nYou can select individual members of the ensemble forecast use the keyword `number`.\n\n```python\n...\n   stream=\"enfo\",\n   step=24,\n   param=\"msl\",\n   number=1,\n...\n   stream=\"enfo\",\n   step=24,\n   param=\"msl\",\n   number=[1, 10, 20],\n...\n```\n\n| List of ensemble numbers |\n| ----------------------------- |\n|   1 to 50 |\n\n\u003e 📌 **NOTE**: Not specifying `number` will return all ensemble forecast members.\n\n## Examples\n\n### Download a single surface parameter at a single forecast step from ECMWF's 00UTC HRES forecast\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"oper\",\n    type=\"fc\",\n    step=24,\n    param=\"2t\",\n    target=\"data.grib2\",\n)\n```\n\n### Download the tropical cyclone tracks from ECMWF's 00UTC HRES forecast\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"oper\",\n    type=\"tf\",\n    step=240,\n    target=\"data.bufr\",\n)\n```\n\n- The downloaded data are encoded in BUFR edition 4\n- For the HRES Tropical Cyclone tracks at time=06 and time=18 use:\n\n```python\n...\n   step = 90,\n...\n```\n\n\u003e ❗ **NOTE:** Tropical cyclone tracks products are only available when there are tropical cyclones observed or forecast.\n\n### Download a single surface parameter at a single forecast step for all ensemble members from ECMWF's 12UTC 00UTC ENS forecast\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"pf\",\n    param=\"msl\",\n    target=\"data.grib2\",\n)\n```\n\n- To download a single ensemble member, use the `number` keyword:  `number=1`.\n- All of the odd numbered ensemble members use `number=[num for num in range(1,51,2)]`.\n- To download the control member, use `type=\"cf\"`.\n\n\n### Download a single surface parameter at a single forecast step for all ensemble members from ECMWF's 12UTC 00UTC AIFS-ENS forecast\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\", model=\"aifs-ens\")\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"pf\",\n    param=\"msl\",\n    target=\"data.grib2\",\n)\n```\n\n- To download a single ensemble member, use the `number` keyword:  `number=1`.\n- All of the odd numbered ensemble members use `number=[num for num in range(1,51,2)]`.\n- To download the control member, use `type=\"cf\"`.\n\n### Download the Tropical Cyclone tracks from ECMWF's 00UTC ENS forecast\n\nThe Tropical Cyclone tracks are identified by the keyword `type=\"tf\"`.\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"tf\",\n    step=240,\n    target=\"data.bufr\",\n)\n```\n\n- The downloaded data are encoded in BUFR edition 4\n- For the ENS Tropical Cyclone tracks at time=06 and time=18 replace `step=240` with `step=144`.\n\n### Download the ensemble mean and standard deviation for all parameters at a single forecast step from ECMWF's 00UTC ENS forecast\n\nThe ensemble mean and standard deviation are identified by the keywords `type=\"em\"`:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"em\",\n    step=24,\n    target=\"data.grib2\",\n)\n```\n\nand `type=\"es\"`, respectively:\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"es\",\n    step=24,\n    target=\"data.grib2\",\n)\n\n```\n\n### Download the ensemble probability products\n\nThe ensemble probability products are identified by the keyword `type=\"ep\"`.  The probability products are available only for `time=00` and `time=12`.\n\nTwo different products are available.\n\n#### Probabilities - Instantaneous weather events - Pressure levels\n\nThe probability of temperature standardized anomalies at a constant\npressure level of 850hPa are available at 12 hourly forecast steps.\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"ep\",\n    step=[i for i in range(12, 361, 12)],\n    levelist=850,\n    param=[\n        \"ptsa_gt_1stdev\",\n        \"ptsa_gt_1p5stdev\",\n        \"ptsa_gt_2stdev\",\n        \"ptsa_lt_1stdev\",\n        \"ptsa_lt_1p5stdev\",\n        \"ptsa_lt_2stdev\",\n    ],\n    target=\"data.grib2\",\n)\n```\n\n#### Probabilities - Daily weather events - Single level\n\nThe probabilities of total precipitation and wind gusts exceeding specified thresholds in a 24 hour period are available for step ranges 0-24 to 336-360 by 12​​.  These are specified in the retrieval request using, e.g.: `step=[\"0-24\", \"12-36\", \"24-48\"]`.\n\n```python\nfrom ecmwf.opendata import Client\n\nclient = Client(source=\"ecmwf\")\n\nsteps = [f\"{12 * i}-{ 12 * i + 24}\" for i in range(29)]\n\nclient.retrieve(\n    time=0,\n    stream=\"enfo\",\n    type=\"ep\",\n    step=steps,\n    param=[\"tpg1\", \"tpg5\", \"10fgg10\"],\n    target=\"data.grib2\",\n)\n```\n\n### ECMWF open data license\n\nBy downloading data from the ECMWF open data dataset, you agree to the terms: Attribution 4.0 International (CC BY 4.0). If you do not agree with such terms, do not download the data. Visit [this page](https://apps.ecmwf.int/datasets/licences/general/) for more information.\n\n### License\n\n[Apache License 2.0](LICENSE) In applying this licence, ECMWF does not waive the privileges and immunities\ngranted to it by virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["meteorology","weather","grib"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/1184","html_url":"https://ost.ecosyste.ms/projects/1184"}