Overview
I ran ASS-ADE (pure static analysis, no LLM, < 2 seconds) on httpie and found a few things worth flagging. Opened a companion PR (#1825) with the full reports — sharing the findings here as an issue so they can be tracked and discussed independently of the PR.
Top findings
1. httpie/cli/definition.py — 956 lines, mixed responsibilities
This file combines:
- Constant/enum declarations (belongs in
constants.py)
- Argument group builder functions (could be
groups.py)
- Top-level
ParserSpec composition (the actual "definition")
At 956 lines, it's hard to navigate and test each responsibility in isolation. Splitting it into 2-3 files with a single responsibility each wouldn't change any public API.
2. Documentation coverage — 17%
Only 189 of 1,107 public callables have docstrings. The files with the most external call surface and no docs:
httpie/cli/argtypes.py (275 lines, type converters)
httpie/cli/options.py (249 lines, ParserSpec / Qualifiers)
3. Circular imports in output/
Two import cycles detected:
client.py → context.py → output/utils.py (possible false positive — worth verifying)
- Self-referential import in
output/formatters/xml.py
4. 66 untested modules
Most are in docs/, extras/, and tooling scripts — not the core library. The ratio for the core httpie/ package itself is better.
Recon summary
Files: 265 (135 source)
Circular deps: 2
Doc coverage: 17% (189/1107)
Untested modules: 66
Tier violations: 3 files spanning multiple layers
Tool
ASS-ADE — ass-ade recon <path>. Runs locally in about 1.5 seconds, no external calls. The full RECON_REPORT.md is in the companion PR.
No action required — just sharing in case any of this is useful for future work. Happy to run a follow-up analysis on a specific module if it would help.
Overview
I ran ASS-ADE (pure static analysis, no LLM, < 2 seconds) on httpie and found a few things worth flagging. Opened a companion PR (#1825) with the full reports — sharing the findings here as an issue so they can be tracked and discussed independently of the PR.
Top findings
1.
httpie/cli/definition.py— 956 lines, mixed responsibilitiesThis file combines:
constants.py)groups.py)ParserSpeccomposition (the actual "definition")At 956 lines, it's hard to navigate and test each responsibility in isolation. Splitting it into 2-3 files with a single responsibility each wouldn't change any public API.
2. Documentation coverage — 17%
Only 189 of 1,107 public callables have docstrings. The files with the most external call surface and no docs:
httpie/cli/argtypes.py(275 lines, type converters)httpie/cli/options.py(249 lines,ParserSpec/Qualifiers)3. Circular imports in
output/Two import cycles detected:
client.py → context.py → output/utils.py(possible false positive — worth verifying)output/formatters/xml.py4. 66 untested modules
Most are in
docs/,extras/, and tooling scripts — not the core library. The ratio for the corehttpie/package itself is better.Recon summary
Tool
ASS-ADE —
ass-ade recon <path>. Runs locally in about 1.5 seconds, no external calls. The fullRECON_REPORT.mdis in the companion PR.No action required — just sharing in case any of this is useful for future work. Happy to run a follow-up analysis on a specific module if it would help.