Skip to content

Commit 155b800

Browse files
authored
release: add 0.15.2 notes (#107)
No public API changes since 0.15.1 — docs accuracy fixes, the sync/async dedup refactor series closing out the 2026-06-14 deep audit's duplication list, and CI/planning tooling.
1 parent d7cc50f commit 155b800

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

planning/releases/0.15.2.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# httpware 0.15.2 — docs accuracy + internal dedup, no behavior change
2+
3+
No public API changes. Every commit since 0.15.1 is docs, internal refactoring,
4+
CI, or planning tooling — safe to upgrade unconditionally.
5+
6+
## Docs
7+
8+
- **Site overhaul + audit fixes** (#90): the "Why httpware" pitch is now
9+
benefit-first (`raise_for_status()` dropped from the lead); `index.md`
10+
slimmed to a true quickstart; the OpenTelemetry wiring guide moved to a new
11+
`docs/observability.md`; `resilience.md` trimmed. Fixed two
12+
security-relevant doc bugs where `errors.md`/`middleware.md` said secrets in
13+
URLs are *not* redacted when the code does redact them, plus several other
14+
doc/code mismatches (Retry-After-over-`max_delay` behavior,
15+
previously-undocumented `ResponseTooLargeError`/`max_response_body_bytes`).
16+
- **Project lockup hero** added to the docs home page (#91).
17+
- **Docs-and-comments audit**: fixed stale docstrings (`BulkheadFullError`,
18+
`AsyncClient.stream()`'s version caveat), a cross-doc contradiction on where
19+
`DecodeError` wrapping happens, a `httpx`/`httpx2` terminology slip (with a
20+
follow-up correction to the underlying `respx`-compatibility claim, verified
21+
against `respx`'s own docs), a `contributing.md` wording contradiction on
22+
docstring requirements, and deduplicated `ResponseTooLargeError`'s
23+
triple-repeated behavior description down to one canonical account
24+
(#103, #104, #105).
25+
26+
## Internal (no behavior change)
27+
28+
Continuation of the sync/async deduplication pass flagged by the 2026-06-14
29+
deep audit — every remaining "duplicated, no divergence yet" item from that
30+
audit is now closed:
31+
32+
- Body-cap subsystem and httpx2-exception-mapper context managers extracted
33+
out of `client.py` into dedicated `_internal/` modules.
34+
- Client construction-validation and kwargs-assembly logic shared between
35+
`Client`/`AsyncClient`.
36+
- The 6 hand-duplicated exception reconstruct/`__reduce__` pairs in
37+
`errors.py` collapsed into one `_KeywordReduceMixin`.
38+
- `Bulkhead`/`AsyncBulkhead` constructor validation and rejection-event
39+
construction shared.
40+
- The decoders' memoizing get-or-build cache pattern (4 sites across
41+
`pydantic.py`/`msgspec.py`) shared via one generic helper.
42+
- `_read_capped`/`_read_capped_async`'s declared-length-reject and
43+
`Response`-reconstruction blocks shared.
44+
- `AsyncBulkhead`/`AsyncCircuitBreaker`'s identical single-event-loop guard
45+
shared via a new `_event_loop_guard.py`.
46+
47+
## CI & tooling
48+
49+
- PRs now run `mkdocs --strict` as a check, catching broken internal
50+
links/anchors and orphaned pages before merge (#92).
51+
- Planning convention bumped to 2.0.0 (flat change files, no per-change
52+
folders) (#93, #94).
53+
- Dropped stale `ty: ignore` suppressions in circuit-breaker tests that a
54+
newer `ty` no longer needs (#96).
55+
56+
## Downstream
57+
58+
No action required. Nothing about the installed package's public behavior
59+
changes.

0 commit comments

Comments
 (0)