Skip to content

v0.4.0

Changelog

Features

  • Add support for automatically loading packages based on their entrypoints
  • Produce an updated requirements.txt file when launching the laboratory with a custom Pyodide lock file
  • Enable JupyterLite terminal based on cockle
  • Improve support for embedding in external documentation pages with extendable configurations, environment variables, and bootstrap code
  • Upgrade Pyodide and JupyterLite

Packages

  • Update the numcodecs-wasm-* family of packages, see https://numcodecs-wasm.readthedocs.io, now including -ebcc, -lc, -pressio, -qpet-sperr, -sperr, and -stochastic-rounding
  • Add the compression-safeguards, numcodecs-safeguards, and xarray-safeguards packages
  • Add the earthkit-climate, earthkit-utils, and earthkit-workflows packages but remove the top-level earthkit package
  • Add the annotated-doc, anywidget, arcosparse, argon2-cffi, argon2-cffi-bindings, arraypartition, arro3-compute, arro3-core, arro3-io, boto3, branca, cachetools, cf-python, cfapyx, cfdm, cfunits, copernicusmarine, cykhash, dahuffman, dill, ecmwf-datastores-client, fire, frozendict, geoarrow-rust-core, google-crc32c, hdf5plugin, humanize, ipyevents, ipyleaflet, ipympl, ipyspin, ipython-pygments-lexers, itables, jupyter-leaflet, leb128, libpysal, numcodecs-bitmap-index, numcodecs-delta, numcodecs-huffman, numcodecs-pw-ratio, numcodecs-replace, numcodecs-shuffle, numcodecs-tokenize, numcodecs-zero, numpy-quaddtype, objsize, odc-geo, odc-loader, odc-stac, polars, protobuf, psygnal, pyfive, pyrobuf, pyrosm, python-rapidjson, pyvis, pyzmq, qubed, rtree, s3transfer, semver, shellingham, sly, sortedcontainers, spglm, spint, spreg, termcolor, traittypes, typer, uritools, varint, xsdba, xyzservices, and zfpy packages
  • Remove the unsupported pyfdb package
  • Pin the setuptools package to v80.10.2
  • Upgrade numpy to v2.4.4
  • Upgrade other packages

JupyterLab

  • Add the jupyterlab_myst extension
  • Disable the jupyterlab-tour extension

Pre-installed Python environment

# ========== Online Laboratory for Climate Science and Meteorology =========== #
#                                                                              #
#                               requirements.txt                               #
#                                                                              #
#    This list contains the locked versions of all pre-installed packages.     #
# ============================================================================ #

# python == 3.13.2
# abi == pyodide_2025_0

adjustText == 1.3.0
affine == 2.4.0
aiobotocore == 3.4.0
aiohappyeyeballs == 2.6.1
aiohttp == 3.13.5
aioitertools == 0.13.0
aiosignal == 1.4.0
annotated-doc == 0.0.4
annotated-types == 0.7.0
antlr4-python3-runtime == 4.13.2
anywidget == 0.10.0
arcosparse == 0.5.1
argon2-cffi == 25.1.0
argon2-cffi-bindings == 25.1.0
argparse == 1.4.0
array-api-compat == 1.14.0
arraypartition == 1.2.0
arro3-compute == 0.8.0
arro3-core == 0.8.0
arro3-io == 0.8.0
asciitree == 0.3.3
astropy == 7.2.0
astropy-iers-data == 0.2026.4.6.0.54.57
asttokens == 3.0.1
async-timeout == 5.0.1
attrs == 26.1.0
beautifulsoup4 == 4.14.3
blosc2 == 4.1.2
boltons == 25.0.0
boto3 == 1.42.84
botocore == 1.42.84
Bottleneck == 1.6.0
branca == 0.8.2
cachetools == 7.0.5
Cartopy == 0.25.0
cattrs == 26.1.0
cdsapi == 0.7.7
certifi == 2026.2.25
cf-python == 3.19.0
cf-units == 3.3.1
cf_xarray == 0.10.11
cfapyx == 2025.12.9
cfdm == 1.13.0.0
cffi == 2.0.0
cfgrib == 0.9.15.1
cftime == 1.6.5
cfunits == 3.3.7
charset-normalizer == 3.4.7
click == 8.3.2
click-plugins == 1.1.1.2
cligj == 0.7.2
cloudpickle == 3.1.2
cmcrameri == 1.9
cmocean == 4.0.3
comm == 0.2.3
compression-safeguards == 1.0.0b4
conflator == 0.1.8
contourpy == 1.3.3
copernicusmarine == 2.4.0b2
covjson-pydantic == 0.7.0
covjsonkit == 0.2.15
crc32c == 2.8
cycler == 0.12.1
cykhash == 2.0.1
dahuffman == 0.4.2
dask == 2026.3.0
datapi == 0.4.0
decorator == 5.2.1
Deprecated == 1.3.1
deprecation == 2.1.0
dill == 0.4.1
docstring_parser == 0.17.0
donfig == 0.8.1.post1
earthkit-climate == 0.3.1
earthkit-data == 0.19.3
earthkit-geo == 0.5.2
earthkit-hydro == 1.2.0
earthkit-meteo == 0.6.2
earthkit-plots == 0.6.1
earthkit-plots-default-styles == 0.1.3
earthkit-regrid == 0.5.1
earthkit-time == 0.1.8
earthkit-transforms == 0.5.4
earthkit-utils == 0.3.0
earthkit-workflows == 0.9.0
eccodes == 2.46.0
ecmwf-api-client == 1.6.5
ecmwf-datastores-client == 0.5.1
ecmwf-opendata == 0.3.26
entrypoints == 0.4
executing == 2.2.1
fastprogress == 1.0.5
filelock == 3.25.2
findlibs == 0.1.2
fiona == 1.10.1
fire == 0.7.1
flexcache == 0.3
flexparser == 0.4
fonttools == 4.62.1
frozendict == 2.4.7
frozenlist == 1.8.0
fsspec == 2026.3.0
future == 1.0.0
geoarrow-rust-core == 0.6.1
geopandas == 1.1.3
google-crc32c == 1.8.0
gribscan == 0.0.16
h5netcdf == 1.8.1
h5py == 3.16.0
hda == 2.39
hdf5plugin == 6.0.0
healpy == 1.19.0
humanize == 4.15.0
idna == 3.11
ImageIO == 2.37.3
iniconfig == 2.3.0
intake == 2.0.9
intake-esm == 2025.12.12
intake-xarray == 2.0.0
ipdb == 0.13.13
ipyevents == 2.0.4
ipyfilite == 0.1.30
ipyleaflet == 0.20.0
ipympl == 0.10.0
ipyspin == 1.0.1
ipython == 9.12.0
ipython_pygments_lexers == 1.1.1
ipywidgets == 8.1.8
itables == 2.7.3
jedi == 0.19.2
Jinja2 == 3.1.6
jmespath == 1.1.0
joblib == 1.5.3
jsonpickle == 4.1.1
jsonschema == 4.26.0
jsonschema-specifications == 2025.9.1
jupyter-leaflet == 0.20.0
jupyterlab_widgets == 3.0.16
kerchunk == 0.2.10
kiwisolver == 1.5.0
lazy-loader == 0.5
ldcpy == 0.20
leb128 == 1.0.9
legacy-cgi == 2.6.4
libpysal == 4.14.1
locket == 1.0.0
lru-dict == 1.4.1
lxml == 6.1.0
lz4 == 4.4.5
Markdown == 3.10.2
markdown-it-py == 4.0.0
MarkupSafe == 3.0.3
matplotlib == 3.10.8
matplotlib-inline == 0.2.1
mdurl == 0.1.2
MetPy == 1.7.1
mpmath == 1.3.0
msgpack == 1.1.2
multidict == 6.7.1
multiurl == 0.3.7
narwhals == 2.19.0
ndindex == 1.10.1
netCDF4 == 1.7.2
networkx == 3.6.1
numba == 0.65.0
numcodecs == 0.15.1
numcodecs-bitmap-index == 0.1.2
numcodecs-combinators == 0.2.15
numcodecs-delta == 0.1.0
numcodecs-huffman == 0.1.3
numcodecs-observers == 0.1.2
numcodecs-pw-ratio == 0.2.1
numcodecs-replace == 0.1.2
numcodecs-safeguards == 0.1.0b4
numcodecs-shuffle == 0.1.0
numcodecs-tokenize == 0.1.3
numcodecs-zero == 0.1.2
numcodecs_wasm == 0.2.4
numcodecs_wasm_asinh == 0.4.0
numcodecs_wasm_bit_round == 0.4.0
numcodecs_wasm_ebcc == 0.1.1
numcodecs_wasm_fixed_offset_scale == 0.4.0
numcodecs_wasm_fourier_network == 0.3.0
numcodecs_wasm_identity == 0.4.0
numcodecs_wasm_jpeg2000 == 0.3.0
numcodecs_wasm_lc == 0.1.0
numcodecs_wasm_linear_quantize == 0.5.0
numcodecs_wasm_log == 0.5.0
numcodecs_wasm_pco == 0.3.0
numcodecs_wasm_pressio == 0.1.0b1
numcodecs_wasm_qpet_sperr == 0.2.2
numcodecs_wasm_random_projection == 0.4.0
numcodecs_wasm_reinterpret == 0.4.0
numcodecs_wasm_round == 0.5.0
numcodecs_wasm_sperr == 0.2.2
numcodecs_wasm_stochastic_rounding == 0.2.0
numcodecs_wasm_swizzle_reshape == 0.4.0
numcodecs_wasm_sz3 == 0.8.4
numcodecs_wasm_tthresh == 0.3.2
numcodecs_wasm_uniform_noise == 0.4.0
numcodecs_wasm_zfp == 0.6.0
numcodecs_wasm_zfp_classic == 0.4.0
numcodecs_wasm_zlib == 0.4.0
numcodecs_wasm_zstd == 0.4.0
numpy == 2.4.4
numpy_quaddtype == 1.0.0
objsize == 0.8.0
odc-geo == 0.5.1
odc-loader == 0.6.4
odc-stac == 0.5.2
orjson == 3.11.8
packaging == 26.0
pandas == 2.3.3
parso == 0.8.6
partd == 1.4.2
patsy == 1.0.2
pdbufr == 0.14.2
pillow == 12.2.0
Pint == 0.25.3
pkgconfig == 1.6.0
platformdirs == 4.9.4
plotly == 6.6.0
pluggy == 1.6.0
polars == 1.32.3
polytope-client == 0.7.9
pooch == 1.9.0
prompt_toolkit == 3.0.52
propcache == 0.4.1
protobuf == 7.34.1
psygnal == 0.15.1
pure_eval == 0.2.3
pyarrow == 23.0.1
pycparser == 3.0
pydantic == 2.12.5
pydantic_core == 2.41.5
pydap == 3.5.9
pyerfa == 2.0.1.5
pyfive == 1.1.2
Pygments == 2.20.0
pyicon-diagnostics == 0.3.6
pyodc == 1.5.0
pyodide-unix-timezones == 1.0.0
pyogrio == 0.12.1
pyparsing == 3.3.2
pyproj == 3.7.2
pyrobuf == 0.9.3
pyrosm == 0.6.2
pyrsistent == 0.20.0
pyshp == 3.0.3
pystac == 1.14.3
pytest == 9.0.3
python-dateutil == 2.9.0.post0
python-rapidjson == 1.23
pytz == 2026.1.post1
pyvis == 0.3.2
PyYAML == 6.0.3
pyzmq == 27.1.0
qubed == 0.3.1
rasterio == 1.5.0
referencing == 0.37.0
regex == 2026.4.4
requests == 2.33.1
requests-cache == 1.3.1
rich == 14.3.3
rich-argparse == 1.7.2
rpds-py == 0.30.0
rtree == 1.4.1
s3fs == 2026.3.0
s3transfer == 0.16.0
scikit-image == 0.26.0
scikit-learn == 1.8.0
scipy == 1.17.0
semver == 3.0.4
setuptools == 80.10.2
shapely == 2.1.2
shellingham == 1.5.4
six == 1.17.0
sly == 0.5
sortedcontainers == 2.4.0
soupsieve == 2.8.3
spglm == 1.1.0
spint == 1.0.7
spreg == 1.9.0
stack-data == 0.6.3
statsmodels == 0.14.6
sympy == 1.14.0
tblib == 3.2.2
tenacity == 9.1.4
termcolor == 3.3.0
threadpoolctl == 3.6.0
tifffile == 2026.3.3
toolz == 1.1.0
tqdm == 4.67.3
traitlets == 5.14.3
traittypes == 0.2.3
typer == 0.24.1
typing-inspection == 0.4.2
typing_extensions == 4.15.0
tzdata == 2026.1
ujson == 5.12.0
uncertainties == 3.2.3
uritools == 6.0.1
url-normalize == 2.2.1
urllib3 == 2.7.0
varint == 1.0.2
wcwidth == 0.6.0
WebOb == 1.8.9
widgetsnbextension == 4.0.15
wrapt == 2.1.2
xarray == 2026.2.0
xarray-safeguards == 0.1.0b4
xclim == 0.60.0
xeofs == 3.0.4
xhistogram == 0.3.2
xrft == 1.0.1
xsdba == 0.5.0
xyzservices == 2026.3.0
yamale == 6.1.0
yarl == 1.23.0
zarr == 3.1.5
zarr-any-numcodecs == 0.1.3
zfpy == 1.0.1

# system libraries

# libaec == 1.1.3
# libboost == 1.84.0
# libcrc32c == 1.1.0
# libeccodes == 2.46.0
# libexpat == 2.6.3
# libf2c == CLAPACK-3.2.1
# libgdal == 3.8.3
# libgeos == 3.12.1
# libhdf5 == 1.14.3
# libiconv == 1.16
# liblzma == 5.2.2
# libnetcdf == 4.9.2
# libopenblas == 0.3.28
# libopenssl == 1.1.1w
# libproj == 9.6.2
# libsleef == 3.9.0
# libspatialindex == 2.1.0
# libtiff == 4.4.0
# libudunits2 == 2.2.28
# libwebp == 1.2.2
# libxml == 2.9.10
# libxslt == 1.1.33
# libyaml == 0.2.1
# libzfp == 1.0.1
# libzlib == 1.3.1