Commit aa8a810
feat: typed assess errors + X-Quota headers + signer_match types (python parity) (#21)
## Summary
- Add typed `AssessError` taxonomy mirroring node-sdk so consumers can
branch on denial codes without string parsing
- Capture `X-Quota-Limit` / `X-Quota-Used` / `X-Quota-Reset` headers on
`AssessResponse`
- Add `ResolveSigner` request type + `SignerMatch` response type for
server-side signer matching on `/v1/assess` (TEC-263 SDK side)
- Add `telemetry_signer_match()` method (sync + async) for posting
gate-side outcomes
- Wrap all httpx errors (not just timeouts) for parity with node-sdk's
error surface
- Parity tests added for retry-quota / generic-4xx /
token-expired-empty-body
- ty dev bump 0.0.33 → 0.0.34
- Bump version 2.0.2 → 2.1.0 (additive minor)
Closes TEC-274.
## Test plan
- [x] Unit tests pass locally (`uv run pytest`)
- [x] Coverage above 95% threshold (`--cov-fail-under=95`)
- [x] Lefthook pre-push (ty + vulture) passes
- [ ] CI green on this PR
- [ ] `uv build` produces clean wheel
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 510a3ce commit aa8a810
9 files changed
Lines changed: 908 additions & 68 deletions
File tree
- .claude
- agentscore
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
19 | 26 | | |
20 | 27 | | |
21 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
150 | | - | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
151 | 166 | | |
152 | 167 | | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
153 | 173 | | |
154 | 174 | | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
155 | 181 | | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
160 | 196 | | |
161 | 197 | | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
162 | 204 | | |
163 | 205 | | |
164 | 206 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
5 | 13 | | |
6 | 14 | | |
7 | 15 | | |
| |||
21 | 29 | | |
22 | 30 | | |
23 | 31 | | |
| 32 | + | |
24 | 33 | | |
25 | 34 | | |
26 | 35 | | |
| 36 | + | |
27 | 37 | | |
28 | 38 | | |
29 | 39 | | |
| 40 | + | |
30 | 41 | | |
31 | 42 | | |
32 | 43 | | |
| |||
52 | 63 | | |
53 | 64 | | |
54 | 65 | | |
| 66 | + | |
55 | 67 | | |
56 | 68 | | |
57 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
58 | 74 | | |
59 | 75 | | |
60 | 76 | | |
| 77 | + | |
61 | 78 | | |
62 | 79 | | |
63 | 80 | | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
64 | 84 | | |
65 | 85 | | |
66 | 86 | | |
| |||
0 commit comments