PyTorch Dynamo now supports deque re-initialization, fixing graph break
Re-initializing a deque no longer breaks PyTorch's Dynamo graph compilation.
PyTorch's Dynamo just got a subtle but important fix: `collections.deque.__init__` (re-initializing an existing deque) now works inside graph-compiled code. Previously, calling `d.__init__(iterable)` on an already-created deque would cause a graph break with 'Unsupported method call'. The PR, authored with Claude Code, implements the operation by mirroring CPython's `deque_init`: it resets `maxlen` to None (unless a value is passed), clears existing items, then extends with the iterable. It also validates `maxlen` as a non-negative integer, raising TypeError or ValueError to match CPython's behavior. The change removes the CPython313 `expectedFailure` marker on `test_deque.TestBasic.test_basics`, which now passes. Tested with `PYTORCH_TEST_WITH_DYNAMO=1` on CPU.
The fix is part of PyTorch's broader effort to make Dynamo compatible with more Python constructs. For ML engineers, this means fewer unexpected graph breaks and more reliable JIT compilation when using standard library collections. Notably, the PR was authored with Claude Code (Claude Opus 4.8 with 1M context), marking another example of AI-assisted development in core PyTorch infrastructure. While small in code size, the change removes a known pain point for models that manipulate deques in graph mode, and demonstrates the increasing role of LLMs in open-source maintenance.
- Dynamo previously broke graphs on `deque.__init__` for existing deques; now it's fully supported.
- Implementation mirrors CPython's deque_init: resets maxlen, clears elements, then extends.
- PR was authored with Claude Code, highlighting AI's role in PyTorch core development.
Why It Matters
Smoother graph compilation for PyTorch models using deque re-initialization, reducing developer friction and debugging time.