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
\```