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