Compatibility Matrix¶
See the list of Carto-Lab Versions and supported features or package versions.
Server and JupyterLab UI Environment (jupyter_env)¶
| ▼Feature or Package - Carto-Lab Docker Version ▶ | 0.13.0 | 0.19.0 | 0.24.2 | 0.28.0 | 1.1.0 |
|---|---|---|---|---|---|
| Container OS | Debian 11 | Debian 12 | Ubuntu 24.04 | ||
| Conda | 23.3.1 | 24.7.1 | 24.11.0 | 25.3.1 | 26.5.0 |
| Jupyter Lab | 3.6.3 | 4.2.5 | 4.3.1 | 4.4.2 | 4.5.7 |
| Jupyter Server | 2.5.0 | 2.14.2 | 2.15.0 | 2.19.0 | |
| Python (Server) | 3.10.10 | 3.12.5 | 3.12.7 | 3.12.10 | 3.14.5 |
| notebook | 6.5.3 | 6.5.7 | 7.5.0 | ||
| nodejs | / | 22.11.0 | 22.13.0 | 26.2.0 | |
| Language Server: jupyterlab-lsp | / | 5.1.0 (x) | 5.3.0 | ||
| Language Server: pyright | / | 1.1.389 (x) | 1.1.400 | 1.1.409 | |
| Jupyter Real Time collaboration (RTC) | / | 1.16.4 (o) | 4.0.2 (x) | 4.4.0 | |
| jupytergis | / | / | / | / | 0.15.0 |
| jupyterlab_widgets | 3.0.7 | 3.0.13 | 3.0.13 | 3.0.15 | 3.0.16 |
| Jupytext | 1.14.5 | 1.16.4 | 1.17.1 | 1.19.3 | |
| Jupyterlab-git | 0.50.1 | 0.50.2 | 0.51.1 | 0.53.0 | |
| Spellchecker | 0.7.3 | 0.8.4 | 0.8.4 | ||
| nbextensions | 0.7.0 | 0.7.0 | |||
| nbconvert | 7.2.10 | 7.16.4 | 7.16.6 | 7.17.1 | |
| papermill | 2.3.4 | 2.6.0 | 2.7.0 |
/- Feature not included- (x) - Feature test
- o - Issue or Bug
- Empty: no change
Python-Packages (worker_env)¶
| ▼Feature or Package - Carto-Lab Docker Version ▶ | 0.13.0 | 0.19.0 | 0.24.2 | 0.28.0 | 1.1.0 |
|---|---|---|---|---|---|
| Python (worker_env) | 3.9.15 | 3.12.5 | 3.12.7 | 3.13.3 | 3.12.13 |
| IPython | 8.12.0 | 8.26.0 | 8.29.0 | 9.2.0 | 9.14.0 |
| R | / | 4.2.2 | 4.4.1 | 4.5.3 | |
| Mapnik | 3.1 | ||||
| geopandas | 0.12.2 | 1.0.1 | 1.1.3 | ||
| ipywidgets | 8.0.6 | 8.1.5 | 8.1.7 | 8.1.8 | |
| matplotlib | 3.7.1 | 3.9.2 | 3.10.1 | 3.10.9 | |
| shapely | 1.7.1 | 2.0.6 | 2.1.0 | 2.1.2 | |
| pyproj | 3.2.1 | 3.6.1 | 3.7.0 | 3.7.1 | 3.7.2 |
| pandas | 1.5.3 | 2.2.2 | 2.2.3 | 2.3.3 | |
| numpy | 1.22.4 | 1.26.4 | 2.2.5 | 2.4.6 | |
| cartopy | 0.20.1 | 0.23.0 | 0.24.0 | 0.25.0 | |
| geoviews | 1.9.5 | 1.12.0 | 1.13.0 | 1.14.0 | 1.15.1 |
| Bokeh | 2.4.3 | 3.4.2 | 3.5.2 | 3.7.2 | 3.9.0 |
| Rasterio | 1.2.10 | 1.3.10 | 1.4.2 | 1.4.3 | 1.5.0 |
| rioxarray | / | / | / | / | 0.22.0 |
| GDAL | 3.3.3 | 3.9.2 | 3.10.0 | 3.10.3 | 3.12.3 |
R-Packages (r_env)¶
Note
R support was provided as of v0.24.2.
| ▼R Package - Carto-Lab Version ▶ | 0.13.0 | 0.19.0 | 0.24.2 | 0.28.0 | 1.1.0 |
|---|---|---|---|---|---|
| R (r-base) | / | / | 4.4.1 | 4.5.3 | |
| r-caret | / | / | 6.0_94 | 7.0_1 | |
| r-crayon | / | / | 1.5.3 | ||
| r-dplyr | / | / | 1.1.4 | 1.2.1 | |
| r-devtools | / | / | 2.4.5 | 2.5.2 | |
| r-e1071 | / | / | 1.7_16 | 1.7_17 | |
| r-forecast | / | / | 8.23.0 | 8.24.0 | 9.0.2 |
| r-ggplot2 | / | / | 3.5.1 | 3.5.2 | 4.0.3 |
| r-hexbin | / | / | 1.28.5 | 1.28.5 | |
| r-htmltools | / | / | 0.5.8.1 | 0.5.9 | |
| r-htmlwidgets | / | / | 1.6.4 | ||
| r-irkernel | / | / | 1.3.2 | ||
| r-maps | / | / | 3.4.2.1 | 3.4.3 | |
| r-mapdata | / | / | 2.3.1 | ||
| r-tmap | / | / | 3.3_4 | 4.3 | |
| r-nycflights13 | / | / | 1.0.2 | ||
| r-randomforest | / | / | 4.7_1.2 | ||
| r-raster | / | / | 3.6_30 | 3.6_32 | |
| r-rastervis | / | / | 0.51.7 | ||
| r-rcurl | / | / | 1.98_1.16 | 1.98_1.18 | |
| r-rcolorbrewer | / | / | 1.1_3 | ||
| r-remotes | / | / | 2.5.0 | ||
| r-reshape | / | / | 0.8.10 | ||
| r-rmarkdown | / | / | 2.29 | 2.29 | 2.31 |
| r-rodbc | / | / | 1.3_23 | 1.3_26 | 1.3_26.1 |
| r-rsqlite | / | / | 2.3.8 | 2.4.2 | 3.53.1 |
| r-scales | / | / | 1.3.0 | 1.4.0 | |
| r-sf | / | / | 1.0_18 | 1.1_0 | |
| r-stringr | / | / | 1.5.1 | 1.6.0 | |
| r-shiny | / | / | 1.9.1 | 1.11.1 | 1.13.0 |
| r-terra | / | / | 1.7_83 | 1.9_25 | |
| r-tidymodels | / | / | 1.2.0 | 1.3.0 | 1.4.1 |
| r-tidyverse | / | / | 2.0.0 | ||
| unixodbc | / | / | 2.3.12 | 2.3.14 |
Note
Python packages are always included in the container image. However, python packages in the :r and :mapnik container
tags can have slightly different versions due to dependency pinnings. If you want the latest Python packages, as shown
in the Matrix above, don't use the :r and :mapnik container tags.
How to generate this version matrix¶
Generated with tests/get_versions.sh .
#!/bin/bash
# Purpose: Get all important versions from the build Carto-Lab Docker Container
# to be listed in the compatibility matrix
# https://cartolab.fdz.ioer.info/matrix/
# Utility function to get Python package version
get_python_version() {
local env=$1
local pkg=$2
# Special handling for jupyter-collaboration
if [[ "$pkg" == "jupyter-collaboration" ]]; then
docker compose run jupyterlab /opt/conda/envs/${env}/bin/python -c \
"from importlib.metadata import version; print(version('${pkg}'))" 2>/dev/null
else
docker compose run jupyterlab /opt/conda/envs/${env}/bin/python -c \
"import ${pkg}; print(${pkg}.__version__)" 2>/dev/null
fi
}
printf "\nJupyter env package versions: \n\n"
jupyter_packages=(
"notebook"
"IPython"
"jupyterlab_git"
"jupyterlab_lsp"
"pyright"
"jupytext"
"jupyterlab_widgets"
"nbconvert"
"nbclassic"
"papermill"
"jupyterlab_spellchecker"
"jupyter_contrib_nbextensions"
"jupyter-collaboration"
"jupytergis"
)
for pkg in "${jupyter_packages[@]}"; do
version=$(get_python_version jupyter_env $pkg)
echo "$pkg ${version:-Not Installed}"
done
printf "\nWorker env package versions: \n\n"
worker_packages=(
"geopandas"
"ipywidgets"
"matplotlib"
"shapely"
"pyproj"
"pandas"
"numpy"
"cartopy"
"geoviews"
"bokeh"
"rasterio"
"rioxarray"
)
for pkg in "${worker_packages[@]}"; do
version=$(get_python_version worker_env $pkg)
echo "$pkg ${version:-Not Installed}"
done
printf "\nGDAL: \n\n"
docker compose run jupyterlab /bin/bash -c "/opt/conda/envs/worker_env/bin/gdalinfo --version"
printf "\nOS: \n\n"
docker compose run jupyterlab /bin/bash -c "cat /etc/*release"
printf "\njupyterlab Python \n\n"
docker compose run -e JUPYTER_PLATFORM_DIRS=1 jupyterlab \
/opt/conda/envs/jupyter_env/bin/python -W ignore::DeprecationWarning -c "import jupyterlab; print(jupyterlab.__version__)"
printf "\njupyter_server \n\n"
docker compose run jupyterlab /opt/conda/envs/jupyter_env/bin/python -c "import jupyter_server; print(jupyter_server.__version__)"
printf "\nworker_env Python \n\n"
docker compose run jupyterlab /opt/conda/envs/worker_env/bin/python --version
printf "\njupyter_env Python \n\n"
docker compose run jupyterlab /opt/conda/envs/jupyter_env/bin/python --version
printf "\nMapnik (requires container tag :mapnik) \n\n"
docker compose run jupyterlab /usr/bin/python3 -c "import mapnik;print(mapnik.paths.__all__)"
# echo "\nR Version (requires container tag :r) \n\n"
# docker compose run jupyterlab ls /opt/conda/envs/r_env/bin/
printf "\nConda version: \n\n"
docker compose run jupyterlab conda --version
printf "\nR Version (requires container tag :r) \n\n"
docker compose run jupyterlab conda run -n r_env Rscript -e 'cat(R.version.string, "\n")'
printf "\nnodejs version \n\n"
# docker compose run jupyterlab bash -c "conda init;conda activate jupyter_env; nodejs"
docker compose run jupyterlab conda run --no-capture-output -n jupyter_env node --version
### R tag ###
printf "\n=========================================\n"
printf "R Environment (r_env) checks:\n"
printf "=========================================\n"
# Gracefully check if the r_env environment directory exists
if docker compose run jupyterlab [ -d "/opt/conda/envs/r_env" ]; then
printf "\nR Version: \n\n"
docker compose run jupyterlab conda run -n r_env Rscript -e 'cat(R.version.string, "\n")'
# List of explicitly installed packages to extract
r_packages=(
"r-base"
"r-caret"
"r-crayon"
"r-dplyr"
"r-devtools"
"r-e1071"
"r-forecast"
"r-ggplot2"
"r-hexbin"
"r-htmltools"
"r-htmlwidgets"
"r-irkernel"
"r-maps"
"r-mapdata"
"r-tmap"
"r-nycflights13"
"r-randomforest"
"r-raster"
"r-rastervis"
"r-rcurl"
"r-rcolorbrewer"
"r-remotes"
"r-reshape"
"r-rmarkdown"
"r-rodbc"
"r-rsqlite"
"r-scales"
"r-sf"
"r-stringr"
"r-shiny"
"r-terra"
"r-tidymodels"
"r-tidyverse"
"unixodbc"
)
# Join array elements with | and wrap each in ^...$ for exact matching
r_pattern=$(printf "|^%s$" "${r_packages[@]}")
r_pattern=${r_pattern:1} # Remove the leading "|"
printf "\nInstalled R Packages: \n\n"
# Query conda list once with the exact regex pattern
docker compose run jupyterlab conda list -n r_env "$r_pattern"
else
printf "\nr_env is not installed (skipping R checks).\n"
fi
1. To extract versions during development, modify your `.env` and add:
COMPOSE_FILE=docker-compose.build.yml
2. Then use bash tests/get_versions.sh.
This will output versions from your locally built Docker container.
3. Use an LLM to transpose output into the markdown table
Prompt example
I have a Matrix version table in my doc:
| ▼Feature or Package - Carto-Lab Docker Version ▶ | 0.26.0 | 0.27.1 | | |
| ------------------------------------------------ | --------- | --------- | ----------- | ------------ |
| Container OS | Debian 11 | | | |
| Conda | 23.3.1 | | | |
| Jupyter Lab | 3.6.3 | | | |
| Jupyter Server | 2.5.0 | | | |
| Python (Server) | 3.10.10 | | | |
| Python (worker_env) | 3.9.15 | | | |
| notebook | 6.5.3 | | | |
| IPython | 8.12.0 | | | |
| nodejs | / | | | |
| Language Server: jupyterlab-lsp | / | | | |
| Language Server: pyright | / | | | |
| Jupyter Real Time collaboration (RTC) | / | | | |
| jupyterlab_widgets | 3.0.7 | | | |
| Jupytext | 1.14.5 | | | |
| Jupyterlab-git | | | | |
| Spellchecker | 0.7.3 | | | |
| nbextensions | 0.7.0 | | | |
| R | / | | | |
| Mapnik | 3.1 | | | |
| nbconvert | 7.2.10 | | | |
| papermill | 2.3.4 | | | |
| geopandas | 0.12.2 | | | |
| ipywidgets | 8.0.6 | | | |
| matplotlib | 3.7.1 | | | |
| shapely | 1.7.1 | | | |
| pyproj | 3.2.1 | | | |
| pandas | 1.5.3 | | | |
| numpy | 1.22.4 | | | |
| cartopy | 0.20.1 | | | |
| geoviews | 1.9.5 | | | |
| Bokeh | 2.4.3 | | | |
| Rasterio | 1.2.10 | | | |
I extracted versions for 0.27.1, please use these versions to update the table above:
\```
# paste output from get_versions.sh here
\```