[CHORE] Rebuild the Codespaces devcontainer on Python 3.12 and uv - #60
Merged
Merged
Conversation
🚀 Workshop branch preview deployed!You can review your changes at https://staging.overturemaps.org/workshop/pr/60/index.html ♻️ Last refreshed: 2026-10-01T01:33:45Z |
Seth Fitzsimmons (sethfitz)
force-pushed
the
devcontainer-py312
branch
from
September 26, 2026 20:23
835e91d to
c6716a7
Compare
Seth Fitzsimmons (sethfitz)
force-pushed
the
devcontainer-py312
branch
from
September 30, 2026 21:15
1d1244b to
ca65b34
Compare
universal:2 is a frozen Ubuntu 20.04 image that does not record which Python it ships, so pyproject.toml's requires-python >= 3.12 held only by accident. The devcontainers/python:3-3.12-trixie image pins the Python minor that .python-version names (3.12.14 as of image 3.2.3). postCreate now runs `uv sync --frozen`, the same path the README gives for local setup, so Codespaces installs exactly what uv.lock records and never rewrites uv.lock in an attendee's workspace. The venv lands in .venv/, which is prepended to PATH and set as the default interpreter so terminals and the Jupyter kernel picker find it. UV_LINK_MODE=copy silences the hardlink warning uv prints because the cache and /workspaces sit on different filesystems. Signed-off-by: Seth Fitzsimmons <seth@mojodna.net>
Verified working: python 3.12.14, duckdb spatial+h3, and the notebook kernel picker recommends .venv on selection. Signed-off-by: Seth Fitzsimmons <seth@mojodna.net>
The schema slides pipe GeoParquet through gpq and jq into the validator (slide 17). duckdb was already installed; gpq comes from its GitHub release via the gh-release feature, pinned to 0.24.0, the last release. Built as linux/amd64 (Codespaces' arch) 2026-09-26: gpq 0.24.0, jq 1.8.2, duckdb 1.5.5 on PATH. Signed-off-by: Seth Fitzsimmons <seth@mojodna.net>
Seth Fitzsimmons (sethfitz)
force-pushed
the
devcontainer-py312
branch
from
October 1, 2026 01:33
ca65b34 to
a7e3836
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's in this PR?
mcr.microsoft.com/devcontainers/universal:2(frozen Ubuntu 20.04, undeclared Python) tomcr.microsoft.com/devcontainers/python:3-3.12-trixie, matching.python-versionuv sync --frozen, the same command the README gives for local setup, via theghcr.io/va-h/devcontainers-features/uvfeature.venvgoes first onPATHand is set as the default interpreter, sopython,jupyter, and the notebook kernel picker all use itpython --version→ 3.12.14,duckdb -c "LOAD spatial; LOAD h3; SELECT 1"returns a row, andduckdb/geopandas/lonboardall import. The kernel picker isn't pre-selected on a fresh notebook (normal VS Code behavior — no notebook has had a kernel chosen before), but.venvis the recommended option when you pick one