Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
77e03c0
Merge pull request #153 from ecmwf/main
sandorkertesz Oct 24, 2025
49e6cd7
fix: add eku to ek deps in downstream ci hpc config
Oisin-M Nov 18, 2025
f45ea40
fix: add ekh, ekd, ekm as python deps in ci-hpc-config
Oisin-M Nov 18, 2025
fa6d600
Merge pull request #155 from ecmwf/fix/add_eku_to_hpc_config_deps
iainrussell Nov 18, 2025
c7d46a7
feat: make earthkit a PEP420 namespace
Oisin-M Mar 18, 2026
158853d
fix: update version tests for new setup
Oisin-M Mar 18, 2026
8bb7961
Update docs style to furo
iainrussell Mar 22, 2026
6c5e1a5
Added ensemble explorer example notebook
iainrussell Mar 23, 2026
01e3f59
Add developer guidelines
iainrussell Mar 23, 2026
33257b1
Remove regrid, time and workflows from dependencies
iainrussell Mar 31, 2026
4ca8a51
Update docs - sidebar navigation and cleaner front page
iainrussell Mar 31, 2026
ffc5148
Refactor docs structure
iainrussell Mar 31, 2026
be8d155
Docs requirements
iainrussell Mar 31, 2026
0c503df
Docs requirements
iainrussell Mar 31, 2026
c8600aa
Rename tutorials
iainrussell Mar 31, 2026
bd261fe
Fix xrefs
iainrussell Mar 31, 2026
efbe5c9
Version 1.0 banner
iainrussell Mar 31, 2026
1366d4a
Installation and versions
iainrussell Mar 31, 2026
861ae18
Update earthkit deps to 1.0.0rc0
iainrussell Mar 31, 2026
0cec500
Merge pull request #160 from ecmwf/release/1.0.0rc0
iainrussell Mar 31, 2026
536dacb
Installation and versions
iainrussell Mar 31, 2026
dab21d6
Docs cleanup
iainrussell Apr 1, 2026
2dbd258
Docs cleanup
iainrussell Apr 1, 2026
29ca68b
Docs - point to latest versions of earthkit packages
iainrussell Apr 1, 2026
a859e40
Merge pull request #159 from ecmwf/feat/pep420_namespace
iainrussell Apr 1, 2026
fe60c5d
Relax the dependency versions
iainrussell Apr 1, 2026
832e269
Fix earthkit dep versions
iainrussell Apr 1, 2026
461dbc8
chore: remove unused files and update outdated bits
Oisin-M Apr 1, 2026
953d315
chore: update readme images
Oisin-M Apr 1, 2026
ebbcd7b
chore: only include 1.0 components in overview
Oisin-M Apr 1, 2026
7fcb343
Fix import tests
iainrussell Apr 1, 2026
a4abd9e
chore: please qa
Oisin-M Apr 1, 2026
f0c5ca9
fix: add back version with setuptools_scm
Oisin-M Apr 1, 2026
05bd6d6
Merge pull request #161 from ecmwf/chore/cleanup
iainrussell Apr 1, 2026
8c8a8bd
Remove tests that are expected to fail
iainrussell Apr 1, 2026
4105638
chore: remove unused tutorials
Oisin-M Apr 9, 2026
5aefc94
feat: copy over 2025 earthkit training notebooks
Oisin-M Apr 9, 2026
fe32f5b
feat: update comparing-models-solutions for 1.0rc
Oisin-M Apr 9, 2026
f96d84f
feat: update time series solutions for 1.0rc
Oisin-M Apr 9, 2026
667f4b6
feat: update grid tutorial for 1.0rc
Oisin-M Apr 9, 2026
ed47ee9
feat: update meteo tutorial for 1.0rc
Oisin-M Apr 9, 2026
b3aca26
feat: basic fieldlist support
Oisin-M Apr 10, 2026
8475545
chore: add more robust but uglier unit conversion logic
Oisin-M Apr 13, 2026
b38defd
chore: update polytope notebooks with new template
Oisin-M Apr 13, 2026
3233df5
feat: show how to use ekg to generate country polygon to pass to poly…
Oisin-M Apr 14, 2026
fb53f6a
chore: hide polytope vertical profile until better tutorial
Oisin-M Apr 14, 2026
bcca1b8
feat: update polytope timeseries with ekp non-interactive meteogram
Oisin-M Apr 14, 2026
7a80f5f
chore: update docs/requirements.txt to include ek develop packages
Oisin-M Apr 14, 2026
3cc4e82
chore: remove outdated workflows
Oisin-M Apr 14, 2026
58598de
chore: remove broken link
Oisin-M Apr 14, 2026
c9ff15f
chore: bump pretty-format-yaml version
Oisin-M Apr 14, 2026
df556ec
chore: please qa
Oisin-M Apr 14, 2026
82ea843
Merge pull request #164 from ecmwf/feat/cleanup_polytope_tutorials
Oisin-M Apr 15, 2026
9b19d06
Merge pull request #165 from ecmwf/chore/clean
Oisin-M Apr 15, 2026
cbb2da1
chore: pre-run notebooks
Oisin-M Apr 15, 2026
2217423
chore: prerun all notebooks even if hidden
Oisin-M Apr 15, 2026
ab4ae89
chore: show new tutorials
Oisin-M Apr 15, 2026
9aa6aa6
fix: correct development instructions
Oisin-M Apr 15, 2026
df7f262
chore: deduplicate getting started
Oisin-M Apr 15, 2026
ea634e7
Update earthkit-transforms dependency version
EddyCMWF Apr 16, 2026
bda02da
Merge pull request #166 from ecmwf/ek-t-to-rc2
JamesVarndell Apr 16, 2026
1eba2ed
feat: clean meteo solutions
Oisin-M Apr 16, 2026
9d945e7
chore: cleaner polytope example
Oisin-M Apr 16, 2026
a9847f5
fix: section titles
Oisin-M Apr 16, 2026
d32738b
chore: fix titles for comparing models solutions
Oisin-M Apr 16, 2026
fa88802
fix: broken link
Oisin-M Apr 16, 2026
5ea9896
fix: make sure f is a field not a fieldlist in example
Oisin-M Apr 16, 2026
8f50f17
feat: add outline of gpu notebook example
Oisin-M Apr 16, 2026
beaa08f
feat: run gpu notebook
Oisin-M Apr 16, 2026
12a0cbf
feat: nicer text for gpu example
Oisin-M Apr 16, 2026
1b0fb2b
chore: rerun with larger data
Oisin-M Apr 16, 2026
bb1931d
feat: gpu notebook fix plot
Oisin-M Apr 16, 2026
86785fa
chore: regrid single field
Oisin-M Apr 16, 2026
f2bdcfd
Merge pull request #167 from ecmwf/feat/gpu_example
Oisin-M Apr 16, 2026
167148a
feat: show gpu example
Oisin-M Apr 16, 2026
582f667
chore: small fix
Oisin-M Apr 16, 2026
28ed325
Merge pull request #163 from ecmwf/feat/tutorials
JamesVarndell Apr 17, 2026
ae40e25
Bumps to latest versions of earthkit packages
JamesVarndell Apr 17, 2026
90083b2
Merge pull request #168 from ecmwf/chore/bump-rc-versions
JamesVarndell Apr 17, 2026
09983a7
Update earthkit-geo dependency to version 1rc4
JamesVarndell Apr 21, 2026
8bdf10d
Release 1.0.0rc2 (#169)
sandorkertesz May 1, 2026
7cf33ec
Update earthkit-plots dependency version to 1rc7 (#170)
JamesVarndell May 5, 2026
9d946c6
Prepare release 1.0.0rc3 (#171)
sandorkertesz May 5, 2026
e708026
Release 1.0.0rc4 (#172)
sandorkertesz May 5, 2026
95dea81
Update pyproject.toml
EddyCMWF May 6, 2026
0e795c3
Release 1.0.0rc5 (#173)
sandorkertesz May 6, 2026
cde00da
earthkit-plots version update
JamesVarndell May 6, 2026
79b925f
Update earthkit-packages.yml
EddyCMWF Jun 22, 2026
24ce0a1
Update component versions
sandorkertesz Jun 28, 2026
1ff7909
Merge branch 'main' into release/1.0.0
JamesVarndell Jun 29, 2026
3d69813
Remove mentioning rc from docs
sandorkertesz Jun 29, 2026
c413ff5
Hide development docs
sandorkertesz Jun 29, 2026
7a606c5
Merge release 1.0.0 into main
sandorkertesz Jun 29, 2026
47909ac
Merge release 1.0.0 into main
sandorkertesz Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/ci-hpc-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ build:
python_dependencies:
- ecmwf/eccodes-python@develop
- ecmwf/pyodc@develop
- ecmwf/earthkit-utils@develop
- ecmwf/earthkit-hydro@develop
- ecmwf/earthkit-data@develop
- ecmwf/earthkit-meteo@develop
env:
- ECCODES_SAMPLES_PATH=$ECCODES_DIR/share/eccodes/samples
- ECCODES_DEFINITION_PATH=$ECCODES_DIR/share/eccodes/definitions
53 changes: 0 additions & 53 deletions .github/workflows/legacy-ci.yml

This file was deleted.

15 changes: 0 additions & 15 deletions .github/workflows/notify-new-issue.yml

This file was deleted.

15 changes: 0 additions & 15 deletions .github/workflows/notify-new-pr.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ formats: []
build:
os: "ubuntu-22.04"
tools:
python: "3.9"
python: "3.11"
python:
install:
- requirements: docs/requirements.txt
Expand Down
File renamed without changes.
15 changes: 0 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,3 @@ qa:

unit-tests:
cd .. && python -m pytest earthkit -vv --cov=. --cov-report=$(COV_REPORT) && cd -

type-check:
python -m mypy .

conda-env-update:
$(CONDA) env update $(CONDAFLAGS) -f environment.yml

docker-build:
docker build -t $(PROJECT) .

docker-run:
docker run --rm -ti -v $(PWD):/srv $(PROJECT)

docs-build:
cd docs && rm -fr _api && make clean && make html
25 changes: 2 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,6 @@
</picture>
</p>

<p align="center">
<a href="https://github.com/ecmwf/codex/raw/refs/heads/main/ESEE">
<img src="https://github.com/ecmwf/codex/raw/refs/heads/main/ESEE/foundation_badge.svg" alt="ECMWF Software EnginE">
</a>
<a href="https://github.com/ecmwf/codex/raw/refs/heads/main/Project Maturity">
<img src="https://github.com/ecmwf/codex/raw/refs/heads/main/Project Maturity/incubating_badge.svg" alt="Maturity Level">
</a>
<!-- <a href="https://codecov.io/gh/ecmwf/earthkit">
<img src="https://codecov.io/gh/ecmwf/earthkit/branch/main/graph/badge.svg" alt="Code Coverage">
</a> -->
<a href="https://opensource.org/licenses/apache-2-0">
<img src="https://img.shields.io/badge/Licence-Apache 2.0-blue.svg" alt="Licence">
</a>
<a href="https://github.com/ecmwf/earthkit/releases">
<img src="https://img.shields.io/github/v/release/ecmwf/earthkit?color=purple&label=Release" alt="Latest Release">
</a>
</p>

<p align="center">
<!-- <a href="#quick-start">Quick Start</a>
• -->
Expand All @@ -32,7 +14,7 @@
</p>

> \[!IMPORTANT\]
> This software is **Incubating** and subject to ECMWF's guidelines on [Software Maturity](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity).
> This software is **Graduated** and subject to ECMWF's guidelines on [Software Maturity](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity).

**earthkit** is an open-source project led by ECMWF, providing powerful tools for speeding up weather and climate science workflows by simplifying data access, processing, analysis, visualisation and much more.

Expand All @@ -41,8 +23,7 @@
| | | |
|:-------------------------:|:-------------------------:|:-------------------------:|
| <a href="https://github.com/ecmwf/earthkit-data"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-data-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-data-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-plots"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-plots-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-plots-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-meteo"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-meteo-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-meteo-light.svg"></picture></a> |
| <a href="https://github.com/ecmwf/earthkit-regrid"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-regrid-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-regrid-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-climate"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-climate-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-climate-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-geo"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-geo-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-geo-light.svg"></picture></a> |
| <a href="https://github.com/ecmwf/earthkit-time"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-time-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-time-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-transforms"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-transforms-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-transforms-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-hydro"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-hydro-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-hydro-light.svg"></picture></a> |
| <a href="https://github.com/ecmwf/earthkit-geo"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-geo-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-geo-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-transforms"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-transforms-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-transforms-light.svg"></picture></a> | <a href="https://github.com/ecmwf/earthkit-hydro"><picture><source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-hydro-dark.svg" media="(prefers-color-scheme: dark)"><img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-hydro-light.svg"></picture></a> |

<!-- ## Quick Start -->

Expand All @@ -54,8 +35,6 @@ Install from PyPI:
pip install earthkit
```

More details can be found at https://earthkit.readthedocs.io/en/latest/install.html.

## Licence

```
Expand Down
1 change: 1 addition & 0 deletions docs/_static/book.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
129 changes: 129 additions & 0 deletions docs/_static/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
@import url("https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap");

:root {
--font-stack: "Nunito", sans-serif;
--font-stack--monospace: "Nunito", sans-serif;
}

body {
font-family: "Nunito", sans-serif;
}

h1, h2, h3, h4, h5, h6 {
font-family: "Nunito", sans-serif;
}

/* Sidebar solid background colour */
.sidebar-drawer {
background: #262640;
}

/* SVG overlay – absolute on mobile so it collapses with the drawer */
.sidebar-drawer::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url("octahedral-grid.svg") no-repeat top center / auto 150vh;
opacity: 0.08;
pointer-events: none;
z-index: 0;
}

/*
On desktop, switch the overlay to position: fixed so it stays in place
while scrolling (avoids background-attachment:fixed Safari flicker).
Width values mirror Furo's own sidebar-drawer widths at each breakpoint.
*/
@media screen and (min-width: 63em) {
.sidebar-drawer::before {
position: fixed;
top: 0;
left: 0;
width: calc(50% - 18.5em);
min-width: 15em;
height: 100vh;
}
}

@media screen and (min-width: 82em) {
.sidebar-drawer::before {
width: calc(50% - 26em);
}
}

/* ── xarray dark-mode fix for Furo "auto" theme ──────────────────────
xarray's inline <style> only targets explicit body[data-theme="dark"],
but Furo's auto mode keeps data-theme="auto" and relies on
@media (prefers-color-scheme: dark). Mirror the dark palette here
so xarray widgets remain readable when the OS is in dark mode.
─────────────────────────────────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--xr-font-color0: rgba(255, 255, 255, 1);
--xr-font-color2: rgba(255, 255, 255, 0.54);
--xr-font-color3: rgba(255, 255, 255, 0.38);
--xr-border-color: #555;
--xr-disabled-color: #888;
--xr-background-color: var(--color-background-primary, #131416);
--xr-background-color-row-even: var(--color-background-secondary, #1a1c1e);
--xr-background-color-row-odd: var(--color-background-hover, #1e2124);
}
}

/* Dropdown container in the brand slot (above search bar) */
.ek-project-selector-brand {
padding: 0.4rem 0.75rem 0.6rem;
}

/* Related projects dropdown */
.ek-project-selector {
display: flex;
align-items: center;
gap: 0.4rem;
}

.ek-project-selector select {
flex: 1;
min-width: 0;
background: #131320;
color: #fff;
border: 1px solid #444;
border-radius: 4px;
padding: 0.3rem 0.4rem;
font-size: 0.8rem;
font-family: inherit;
cursor: pointer;
outline: none;
appearance: auto;
}

.ek-project-selector select:focus {
border-color: #FCE54B;
}

/* Homepage card styling */
.sd-card .sd-card-img-top {
height: 100px;
width: auto;
object-fit: contain;
margin: 1rem auto 0 auto;
display: block;
background: transparent;
filter: brightness(0.8) invert(0.1);
transition: filter 0.2s ease;
}

/* Dark mode when user explicitly selects dark */
[data-theme="dark"] .sd-card .sd-card-img-top {
filter: invert(1) brightness(0.6);
}

/* Dark mode when theme = auto and system prefers dark */
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) .sd-card .sd-card-img-top {
filter: invert(1) brightness(0.6);
}
}
44 changes: 44 additions & 0 deletions docs/_static/custom.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
document.addEventListener("DOMContentLoaded", function () {
// Packages list is injected at build time from earthkit-packages.yml via earthkit-packages.js
var packages = window.earthkitPackages || [];
if (!packages.length) return;

// Build the <select> from the YAML-derived packages list
var select = document.createElement("select");
select.setAttribute("aria-label", "Select earthkit documentation");

// Placeholder option
var placeholder = document.createElement("option");
placeholder.value = "";
placeholder.textContent = "Explore the earthkit ecosystem";
placeholder.disabled = true;
placeholder.selected = true;
select.appendChild(placeholder);

packages.forEach(function (p) {
var opt = document.createElement("option");
opt.value = p.url;
opt.textContent = p.name;
select.appendChild(opt);
});

// Navigate immediately on selection
select.addEventListener("change", function () {
var url = select.value;
if (url) {
window.location.href = url;
select.value = "";
}
});

// Wrapper div
var wrapper = document.createElement("div");
wrapper.className = "ek-project-selector";
wrapper.appendChild(select);

// Mount into the brand placeholder above the search bar
var mount = document.getElementById("ek-project-selector-mount");
if (mount) {
mount.appendChild(wrapper);
}
});
Loading
Loading