diff --git a/.forgejo/workflows/check.yaml b/.forgejo/workflows/check.yaml
index 7f57f09..648f4fc 100644
--- a/.forgejo/workflows/check.yaml
+++ b/.forgejo/workflows/check.yaml
@@ -45,6 +45,7 @@ jobs:
       - name: Install packages
         run: |
           python --version
+          python -m venv .venv && source .venv/bin/activate
           pip install -e .[testing] --disable-pip-version-check --no-cache-dir -q
           python -m pip list --format=columns --disable-pip-version-check
       - name: Run pytest
diff --git a/pyproject.toml b/pyproject.toml
index 5165788..11fc0ec 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -18,6 +18,7 @@ dependencies = [
     "pillow~=10.4.0",
     "requests~=2.32.3",
     "tqdm~=4.66.5",
+    "typing_extensions>=4.0; python_version < '3.11'",
 ]
 
 [project.optional-dependencies]
diff --git a/skyeweave/service/atlas.py b/skyeweave/service/atlas.py
index 09d5983..ea4d1ca 100644
--- a/skyeweave/service/atlas.py
+++ b/skyeweave/service/atlas.py
@@ -1,8 +1,14 @@
 import logging
 import pathlib
-from typing import Annotated, List, NotRequired, Tuple, TypedDict
+from typing import Annotated, List, Tuple, TypedDict
 import requests
 
+# Backport of NotRequired for python 3.10 and older
+try:
+    from typing import NotRequired
+except ImportError:
+    from typing_extensions import NotRequired
+
 from ..config import AtlasAPIConfig, PathConfig, ExpressionDefaults, LoggingConfig
 
 LOGGER = logging.getLogger(LoggingConfig.NAME)