Repository navigation
chore(release): 1.7.4 — fix missing httpx runtime dependency + lock upgrades - #13
Merged
Merged
Conversation
httpx is imported unconditionally at runtime by notebook.py (the JupyterLab reverse proxy) and mcp/client.py, and app.py imports notebook.py at module top level. It was only declared in [dependency-groups].dev, which pip and uv add never install, so a plain `pip install minilake` crashed on startup with ModuleNotFoundError. Regressed in 1.6.1 when the notebook proxy landed; before that httpx was test-only. The Docker image and minilake[mcp] escaped it because the mcp package pulls httpx transitively. Claude-Session: https://claude.ai/code/session_01LuvPiJyjNCWksAp6EXfBWY
uv lock --upgrade — 18 patch/minor bumps, no breaking changes: cryptography 50.0.0->50.0.1, pydantic 2.13.4->2.13.5, ruff 0.16.4->0.16.5, mcp 1.29.0->1.29.1 (stays <2), websockets 17.0.1->17.1, click 8.4.2->8.5.0, the Jupyter stack (jupyter-server, jupyter-client, ipython), and transitives. Full Docker suite green: 266 passed. Claude-Session: https://claude.ai/code/session_01LuvPiJyjNCWksAp6EXfBWY
Dependency fix and maintenance. No API changes. Fixes a broken `pip install minilake` / `uv add minilake` — httpx is a runtime import (notebook proxy, MCP client) but was only in the dev group, so a fresh install crashed on startup. httpx is now in [project.dependencies]. Also takes 18 patch/minor lock moves (cryptography, pydantic, mcp 1.29.1, websockets, the Jupyter stack). Full Docker suite green: 266 passed. Claude-Session: https://claude.ai/code/session_01LuvPiJyjNCWksAp6EXfBWY
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.
Why
pip install minilakeanduv add minilakeproduced an install that crashed onstartup with
ModuleNotFoundError: No module named 'httpx'.httpxis a runtime import — the JupyterLab reverse proxy (notebook.py) andthe MCP ASGI client (
mcp/client.py) both import it at module top level, andapp.pyimportsnotebook.pyunconditionally. But it was only declared in[dependency-groups].dev, which pip anduv addnever install. This regressed in1.6.1 when the notebook proxy landed; before that httpx was test-only. The Docker
image and
minilake[mcp]were unaffected because themcppackage pulls httpxtransitively.
What
fix(deps)— promotehttpx>=0.27to[project.dependencies], remove thenow-redundant dev-group entry.
httpx/httpcore/h11were already in theresolved tree, so this only changes the plain
pip installpath.chore(deps)—uv lock --upgrade: 18 patch/minor moves, no breakingchanges (cryptography 50.0.1, pydantic 2.13.5, mcp 1.29.1 — still
<2,websockets 17.1, the Jupyter stack, transitives).
chore(release): 1.7.4— version bump acrosspyproject.toml,uv.lock,FEATURES.md,CHANGELOG.md(new entry), and the GitHub Pages badge insite/index.html.Verification
import minilake.appandminilake --port …now succeed (/_minilake/health→ ok). Before the fix this raised
ModuleNotFoundError.uv run ruff check src/ tests/— clean.docker compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from test-runner) — 266 passed.