v0.7.0
Highlights since v0.6.0:
Cassetter, a reusable configuration object holding the options a group of cassettes share, accepted byuse_cassette()and thevcr_configfixture.uri_normalizer, applied to both recorded and incoming URIs before matching - the region and account-id normalization vcrpy needed custom matchers for.- httpx2 support, gRPC error statuses replayed as
AioRpcError, andawait/async forWebSocket connect styles. - YAML parsing moved to serde-saphyr, and replay now matches against scrubbed values so filtered cassettes keep replaying.
- Documentation site at https://kludex.github.io/cassetter/.
What's Changed
- Scrub gRPC metadata and WebSocket frame bodies in recorded cassettes by @Kludex in #31
- Make cassetter importable from a bare install by @Kludex in #32
- Add documentation site built with Zensical by @Kludex in #33
- Support the httpx2 HTTP client by @Kludex in #34
- Support in-place cassette conversion with secret scrubbing by @Kludex in #35
- Replace serde_yaml with serde-saphyr for YAML parsing by @Kludex in #36
- Expose vcrpy-compatible request introspection on
Cassetteby @Kludex in #37 - Correct recording behavior across
requests,aiohttp, andpyreqwestinterceptors by @Kludex in #40 - Match replay requests against scrubbed values and make
oncereplay-only for existing cassettes by @Kludex in #38 - Harden the Rust core against malformed input and nondeterministic output by @Kludex in #41
- Release patches on failed installs and validate cassette lifecycle edges by @Kludex in #42
- Make CI honest: real coverage, Rust lint gates, OS matrix, latest-deps job by @Kludex in #43
- Support
await/async forconnect styles and clean-close replay in WebSocket interceptor by @Kludex in #44 - Replay recorded gRPC error statuses as
AioRpcErrorby @Kludex in #45 - Maintainability cleanup: dead code, test imports, naming, stub sync by @Kludex in #47
- Share body decoding and
before_record_requesthandling across interceptors by @Kludex in #48 - Extract shared hex codec for binary cassette bodies by @Kludex in #49
- Update benchmark numbers to reflect the serde-saphyr backend by @Kludex in #50
- Add a reusable
Cassetterconfiguration object by @Kludex in #52 - Address PyO3 review findings across scrubbing, matching, and packaging by @Kludex in #53
- Declare project URLs so PyPI links to the docs and repository by @Kludex in #68
- Build free-threaded wheels for 3.14 only by @Kludex in #69
- Close pydantic-ai replay gaps:
uri_normalizer, sanitized cassette names, thread fallback by @Kludex in #51
Full Changelog: v0.6.0...v0.7.0