Commit afd6057
fix: harden cache invalidation, pickle restore, and test coverage
- SetManager.remove() only fires _on_change when an element was actually
removed, avoiding unnecessary cache churn on no-op calls
- _CachedUnionMember.__set__ raises TypeError for non-SetManager values
instead of silently skipping hook wiring (which would break invalidation)
- Constants.__setstate__ guards against malformed/truncated pickle state
using _CachedUnionMember introspection, matching __getstate__'s approach
- Add comment to __init__ explaining the descriptor-assignment ordering
dependency that establishes _pst
- UnicodeDecodeError fallback in base.py now preserves actual/expected
in the assertion message
- Replace duplicate add-title test with pickle round-trip callback test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 9abb861 commit afd6057
3 files changed
Lines changed: 30 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
120 | 121 | | |
121 | 122 | | |
122 | 123 | | |
123 | | - | |
| 124 | + | |
| 125 | + | |
124 | 126 | | |
125 | 127 | | |
126 | 128 | | |
| |||
200 | 202 | | |
201 | 203 | | |
202 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
203 | 210 | | |
204 | 211 | | |
205 | 212 | | |
206 | | - | |
207 | | - | |
| 213 | + | |
208 | 214 | | |
209 | 215 | | |
210 | 216 | | |
| |||
316 | 322 | | |
317 | 323 | | |
318 | 324 | | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
319 | 328 | | |
320 | 329 | | |
321 | 330 | | |
| |||
355 | 364 | | |
356 | 365 | | |
357 | 366 | | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
358 | 377 | | |
359 | 378 | | |
360 | 379 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
277 | 277 | | |
278 | 278 | | |
279 | 279 | | |
280 | | - | |
281 | | - | |
| 280 | + | |
| 281 | + | |
282 | 282 | | |
283 | | - | |
284 | | - | |
285 | | - | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
286 | 288 | | |
287 | 289 | | |
288 | 290 | | |
| |||
0 commit comments