Traverse input callbacks, buffer iterators, memo slots and memo proxy owners.
Clear outgoing payload edges through deferred drops and retire successful
reinitialization state outside the state lock. Retain stream and buffers
payload-cycle regressions in the existing pickle snippet.
Assisted-by: OpenAI Codex:model-version-unavailable
Use frame-aware getattr lookup consistently across descriptor and method reductions. Preserve defining types and exception order, and perform generic builtin-mapping subclass lookup only once.
Assisted-by: OpenAI Codex:model identifier unavailable
Preserve the wrapper-pickle regressions merged into main while refreshing the independent length checks.
Assisted-by: OpenAI Codex:model identifier unavailable
Extract wrapper descriptor reduction from #8954 for Python 3.14. Reduce to getattr on the defining class and cover direct reduction plus one roundtrip in the existing pickle snippet. Preserve canonical expected failures for unrelated staticmethod descriptor behavior.
Assisted-by: OpenAI Codex:model identifier unavailable
* Use populated entries for unpickler MEMOIZE indexes
A sparse BINPUT followed by MEMOIZE must use the number of occupied memo
entries, not the largest index plus one. Store populated entries in a map,
preserve ascending memo copies, reserve fallibly, and release displaced
references after memo guards end.
Keep existing memo assignment/proxy behavior and add one bounded regression
for sparse BINPUT, MEMOIZE identity and copy order. No protocol version,
GC traversal or unrelated pickle input changes are included.
Extracted from the Python 3.15 migration onto the unchanged 3.14 target.
Assisted-by: Codex:model-version-unavailable
* Move sparse memo regression to standard pickle snippet
Use the module-level snippet name requested in review without changing the regression assertions.
Assisted-by: Codex:model-version-unavailable