What happened?
pyproject.toml declares httpx2>=2.5.0 in the dev dependency group:
[dependency-groups]
dev = [
"httpx2>=2.5.0",
"pytest>=8.2",
"ruff>=0.6",
]
Nothing in the repo imports httpx2 — not src/, not tests/. The tests that exercise HTTP (tests/test_ingest_workflow.py, tests/test_web_source_runtime.py) import plain httpx, which is already a runtime dependency (httpx>=0.28.1). So uv sync pulls the separate httpx2 package (plus its own httpcore2/truststore tree) into every dev environment and CI run for nothing.
What did you expect?
The dev group to contain only packages the test/lint loop actually uses. httpx2 should be removed from [dependency-groups].dev and uv.lock regenerated. If a next-gen httpx was intentional, none of the code opts into it, so it can be re-added when something imports it.
Reproduction
grep -rn "httpx2" src tests # no hits
grep -n "httpx2" pyproject.toml # dev dependency only
Environment
-
OS: any
-
Python version: 3.12
-
CodeAlmanac version: 0.3.7
-
Install method: local checkout
-
Agent provider, if relevant: none
-
Almanac root, if relevant: n/a
-
Agent provider, if relevant: none
-
Almanac root, if relevant: n/a
Logs or output
$ grep -rn "import httpx" src tests
src/codealmanac/integrations/sources/web/client.py:1:import httpx
src/codealmanac/integrations/sources/web/adapter.
tests/test_ingest_workflow.py:4:import httpx
tests/test_web_source_runtime.py:3:import httpx
Extra context
Beyond the wasted install, a near-name package that shadows a real dependency's name in the manifest is the kind of entry worth
keeping clean in a public project — anyone auditi stop and figure out why it's there.keeping clean in a public project — anyone auditing the dependency tree has to stop and figure out why it's there.
What happened?
pyproject.tomldeclareshttpx2>=2.5.0in the dev dependency group:Nothing in the repo imports
httpx2— notsrc/, nottests/. The tests that exercise HTTP (tests/test_ingest_workflow.py,tests/test_web_source_runtime.py) import plainhttpx, which is already a runtime dependency (httpx>=0.28.1). Souv syncpulls the separatehttpx2package (plus its ownhttpcore2/truststoretree) into every dev environment and CI run for nothing.What did you expect?
The dev group to contain only packages the test/lint loop actually uses.
httpx2should be removed from[dependency-groups].devanduv.lockregenerated. If a next-gen httpx was intentional, none of the code opts into it, so it can be re-added when something imports it.Reproduction
Environment
OS: any
Python version: 3.12
CodeAlmanac version: 0.3.7
Install method: local checkout
Agent provider, if relevant: none
Almanac root, if relevant: n/a
Agent provider, if relevant: none
Almanac root, if relevant: n/a
Logs or output
Extra context
Beyond the wasted install, a near-name package that shadows a real dependency's name in the manifest is the kind of entry worth
keeping clean in a public project — anyone auditi stop and figure out why it's there.keeping clean in a public project — anyone auditing the dependency tree has to stop and figure out why it's there.