Files

45 lines
1.8 KiB
Markdown

# httpx Corpus Benchmark — How to Reproduce
A synthetic 6-file Python codebase modeled after httpx's architecture. Tests graphify
on a realistic library codebase with clean layering: exceptions → models → auth/transport → client.
## Corpus (6 files)
All input files are in `raw/`:
```
raw/
├── exceptions.py — full HTTPError hierarchy (RequestError, TransportError, HTTPStatusError, etc.)
├── models.py — URL, Headers, Cookies, Request, Response with raise_for_status
├── auth.py — BasicAuth, BearerAuth, DigestAuth (challenge-response), NetRCAuth
├── utils.py — header normalization, query param flattening, content-type parsing
├── transport.py — ConnectionPool, HTTPTransport, AsyncHTTPTransport, MockTransport, ProxyTransport
└── client.py — Timeout, Limits, BaseClient, Client (sync), AsyncClient
```
## How to run
```bash
pip install graphifyy && graphify install
/graphify ./raw
```
Or from the CLI directly:
```bash
pip install graphifyy
graphify ./raw
```
## What to expect
- 144 nodes, 330 edges, 6 communities
- God nodes: `Client`, `AsyncClient`, `Response`, `Request`, `BaseClient`, `HTTPTransport`
- Surprising connections: `DigestAuth``Response` (auth.py reads Response to parse WWW-Authenticate)
- **~1x token reduction** — 6 files fits in a context window, so there's no compression win here
The graph value on a small corpus is structural, not compressive: you can see the full dependency graph, identify god nodes, and understand architecture at a glance. For token reduction to matter you need 20+ files. At 52 files (Karpathy repos benchmark) graphify achieves 71.5x.
Run `graphify benchmark worked/httpx/graph.json` to verify the numbers yourself.
Actual output is already in this folder: `GRAPH_REPORT.md` (human-readable) and `graph.json` (full graph data).