Commit ccec1a2
chore: release 0.1.5
The first release published through the workflow rather than uploaded by
hand, so the first whose files carry attestations. That provenance is
what the NetBox integration asked for: it ships into customer installs
behind a hash-pinned constraints file, and a hand-uploaded artifact was
weaker than the rest of its release machinery holds itself to.
Two fixes consumers reported. A response the SDK could not parse raised
pydantic's ValidationError, which is not a ForwardError and so escaped
every consumer's error handling at once; ForwardResponseError now carries
it, along with the unparsed body. And the library dataclasses gained
to_api(), because a caller reaching for model_dump got an AttributeError
their normalisation swallowed, turning a parse failure into an empty
query library.
One addition: snapshot_cache_ttl, opt-in and off by default. Forward's
request budget is per authenticated user and exceeding it blocks the
user, so resolving a snapshot once per slice across a thread pool spends
a large share of an allowance on a question with one answer.
The rate-limiting documentation now describes Forward's real limiter,
read from the server rather than inferred from a plugin's constant: per
user rather than per account, a lockout rather than a delay, and a
configurable ceiling rather than a constant.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kbxab7ihjPntGAmnsZtqG1 parent 960e448 commit ccec1a2
2 files changed
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
0 commit comments