* Add canonical cross-interpreter serialization tests and fixture bridges
Import the complete CPython test_crossinterp module and provide its capsule bridges using existing serialization and validation logic. Keep fixture modes private instead of expanding SharedValue or interpreter lifecycle APIs.
Assisted-by: OpenAI Codex: model version unavailable
* Simplify canonical cross-interpreter fixture dispatch
Match CPython 3.15.0 mode dispatch with one private constructor instead of six forwarding entry points. Keep generic marshal data distinct from code transport, preserve capsule ownership checks and pure-script validation, and leave the canonical tests unchanged.
Assisted-by: OpenAI Codex: model version unavailable
---------
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
* scripts: make check_redundant_patches.py executable
The redundant-test-patches pre-commit hook uses `language: script`, which
requires the executable bit, and fails on every commit touching Lib/test.
Assisted-by: Claude:claude-sonnet-5-5
* csv: support non-ASCII Unicode dialect characters
Store delimiter, quotechar and escapechar as `char` instead of `u8`, and
run the reader state machine and the writer over code points, so that a
single non-ASCII character such as `€` is accepted like in CPython. The
field size limit is now counted in characters rather than bytes.
Fixes#8408
Assisted-by: Claude:claude-sonnet-5-5
* Align XML parsing and libraries with Python 3.15
Retain the existing XML backend accounting changes and their explicit registry publication limitation. Preserve canonical XML tests and existing RustPython guards, including multiline marker explanations through update_lib.
Assisted-by: OpenAI Codex:model version unavailable
* Retire proven XML guards and sync canonical consumers
Assisted-by: OpenAI Codex:model version unavailable
* Rebase vendored xml onto 1.4.0
Replace the vendored crate sources with the published xml 1.4.0 archive
and reapply the amplification accounting patch on top of it. The two
lexer hunks that conflicted with the new line-ending normalization are
merged into the 1.4.0 read loop. The patch no longer normalizes CR in
entity values or collapses CRLF in attribute values, because the 1.4.0
lexer and attribute reader already do so.
Update the checksums, recorded upstream commit, archive hash and
provenance notes, and require version 1.4 for the path dependency.
Assisted-by: Claude Code:claude-opus-5-5
* Remove stale SAX external resolver expected failure
Linux and macOS canonical CI both demonstrate that the existing
unsupported-scheme resolver test passes. Retire only its expected-failure
decorator through update_lib, preserving its canonical assertions.
This does not implement external DTD parsing.
AI assistance: dot diagnosed CI, migrated the marker, and reviewed the
source delta and normal-hook validation; the model version is not exposed.
Assisted-by: dot: model version not exposed
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
* Support PEP 798 comprehension unpacking
Extract the remaining Python 3.15 comprehension unpacking implementation
from the integration branch. Use existing list/set/dict update operations
and an explicit inner iterator loop for generator unpacking. Align the
public DictComp AST representation and schema with CPython.
Migrate test_unpack_ex and test_unparse with scripts/update_lib from
CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve existing Rust tests;
add no duplicate regression tests or snippets.
AI-assisted source extraction, canonical migration, and independent source
review with OpenAI Codex. Runtime validation is not yet complete.
Assisted-by: OpenAI Codex:model version unavailable
* Improve selected unpacking diagnostics and refresh canonical exception tests
Normalize six supported comprehension-unpacking diagnostics using existing parser context. Restrict the dictionary-spread hint to its first entry to avoid changing unrelated diagnostics.
Migrate the whole test_exceptions module from CPython d220409a13b77de7a6c30abe16ea90db01528edc with the existing updater, preserving only its two existing RustPython markers. Ruff sources and dependency pins are unchanged.
Six focused check/build/strict Clippy gates passed. A paired 34-input compile-only comparison retains six canonical diagnostic improvements, with eight of fifteen canonical cases still differing; this is not full test_exceptions or CI validation.
* Fix mapping-rest error locations and retire stale encoding xfail
* Match remaining unpacking diagnostics without changing Ruff
Use exact retained AST and error ownership to normalize the remaining CPython 3.15 unpacking diagnostics. Reparse only the owned call argument slice with the unchanged Ruff parser when its original recovery loses generator clauses.
Validated all 30 canonical compile-only cases in exec and doctest-style single modes against CPython 3.15.0, plus finite surrounding controls. Targeted compiler Clippy and source-bound builds passed. Full CI is pending. Cspell alone was omitted with the maintainer’s explicit one-commit approval because its npm bootstrap downloads returned HTTP 403; all other applicable configured commit hooks ran.
AI assistance: dot authored, reviewed, and validated the changes. The runtime does not expose its exact model version.
Assisted-by: dot: model version not exposed
---------
Co-authored-by: Codex <codex@openai.com>
A static type with no tp_new of its own whose base is object now gets
DISALLOW_INSTANTIATION instead of inheriting object's tp_new, following
type_ready_set_new. Such types no longer expose an inherited __new__.
A static type that inherits a non-NULL tp_new from its base must have the
same basicsize as that base; type initialization panics otherwise. Types
flagged HEAPTYPE are exempt, like classes created at runtime.
_IOBase is flagged HEAPTYPE so that it keeps inheriting object's tp_new.
FutureIter, TaskStepMethWrapper, hamt, InstructionSequence and
itertools._grouper get constructors of their own.
Assisted-by: Claude:claude-opus-5-5
Assisted-by: Grok:grok-4.7
compile_class_body passed firstlineno to source_line_start_range. When
the AST carries an AstLocations table, firstlineno comes from the table,
while source_line_start_range indexes the source text. A table line past
the end of the text panicked in ruff_source_file's line index.
compile_class_def now also computes the text line that the first-line
span starts on and passes it to compile_class_body for the range. The
location still uses firstlineno. Without a location table the two are
the same line.
Assisted-by: Claude
* Preserve Unicode in thread unraisable messages
Keep the callable representation as WTF-8 for unraisable hooks and audit callbacks. Preserve the existing String entry point and stderr fallback; this does not claim lossless stderr rendering.
Assisted-by: OpenAI Codex:model unavailable
* Use the WTF-8 string conversion constructor
Use the existing From<&str> implementation to copy the message prefix without changing Unicode semantics.
Assisted-by: OpenAI Codex:model unavailable
* Preserve cross-interpreter marshal error causes
Wrap failures from existing code/function serialization helpers as NotShareableError, matching the CPython 3.15 marshal boundary while retaining the original exception cause. No new test C API or lifecycle behavior.
Assisted-by: OpenAI Codex:model-unavailable
* Enforce syslog interpreter boundaries and sync queue cleanup
Reject subinterpreter openlog/closelog before audit or host mutation, and
reject implicit syslog opening after audit when the process logger is not
already open, matching CPython 3.15 guard placement and error text.
Already-open logging and setlogmask remain unchanged.
Migrate concurrent/interpreters/_queues.py through scripts/update_lib to
CPython d220409a13b77de7a6c30abe16ea90db01528edc, removing unused eager
pickle import and exception targets. Native serialization imports pickle
on demand; module import timing and debug locals may nevertheless differ.
No new fixtures or interpreter lifecycle mechanisms are introduced.
Assisted-by: OpenAI Codex:model version unavailable
Extract the unchanged Reader::open decode body into a private owned-buffer
parse helper and add native representation tests for varints, stack depth,
RLE count bounds, and repeated empty records. Preserve all existing tests.
This adds coverage, not a new production decoder fix. Test code passes
cargo check --tests and strict Clippy --tests, but has not been executed.
OpenAI Codex assisted extraction, review, and compile-only validation.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: Codex <codex@openai.com>
Retain direct IR coverage for constant-pool representations, malformed
append-sequence rejection, and vacated instruction-slot metadata reuse.
Reject non-unit terminal append depths at the private folding helper.
Existing production callers already require depth one; this is defensive
contract hardening, not a newly fixed reachable interpreter bug.
Preserve the existing helper structure and all pre-existing tests. The
three added native tests are unchanged from the Python 3.15 upgrade work.
Validation: codegen check and strict Clippy with --tests, a --lib --no-run
build, and exactly three bounded native IR tests (one pass, zero ignored
each). No Python, parser, VM or lifecycle payload was executed. The
symmetric SetAdd guard has no dedicated depth-two assertion.
Assisted-by: OpenAI Codex:model version unavailable
Move the existing conversion helper into the production time module and reuse it from sleep, preserving conversion bodies and internal C-API argument binding.
Assisted-by: OpenAI Codex:model version unavailable
Use decoded logical instructions rather than the preceding raw operand byte. Check referenced constants by None identity and decode common constants without panicking.
Assisted-by: OpenAI Codex:model unavailable
* Align offline profiler argument binding with Python 3.15
Accept the canonical keyword names for binary sample writes and native
context exits. Resolve the argument layout before numeric callbacks,
then preserve float-subclass payloads while accepting numeric protocols
for required and optional profile statistics.
AI-assisted source extraction, implementation, and source review with
OpenAI Codex. Runtime validation remains pending.
Assisted-by: OpenAI Codex:model version unavailable
* Restore the offline profiler capability flag
Preserve the original mega branch's zero-valued process_vm_readv
capability export. The native live unwinder remains unsupported; this
restores the public feature query without claiming live inspection support
or changing canonical test helpers.
AI-assisted source preservation and review with OpenAI Codex.
Assisted-by: OpenAI Codex:model version unavailable
* Restore finite-EOF table bounds for offline profiles
Match CPython's EOF-wide table count and decoding windows while retaining
checked offsets, allocation limits, cursor bounds, and replay checks.
This restores the original mega's finite-file contract without changing
canonical tests or the already validated argument-binding implementation.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve symtable warning exceptions and original filenames (#9282)
Keep warning-hook exceptions untouched instead of rewriting SyntaxError
subclasses. Thread the original Python filename through parser warning
emission and fresh warning-as-error SyntaxError construction, preserving
fsdecoded bytes paths and lone surrogates.
Assisted-by: OpenAI Codex:model-version-unavailable
* build(deps): align the Cranelift 0.136 dependency family (#9341)
* build(deps): bump the wasmtime group across 1 directory with 2 updates
Bumps the wasmtime group with 2 updates in the / directory: [cranelift](https://github.com/bytecodealliance/wasmtime) and [cranelift-module](https://github.com/bytecodealliance/wasmtime).
Updates `cranelift` from 0.135.2 to 0.136.3
- [Release notes](https://github.com/bytecodealliance/wasmtime/releases)
- [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/RELEASES.md)
- [Commits](https://github.com/bytecodealliance/wasmtime/commits)
Updates `cranelift-module` from 0.135.3 to 0.136.3
- [Release notes](https://github.com/bytecodealliance/wasmtime/releases)
- [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/RELEASES.md)
- [Commits](https://github.com/bytecodealliance/wasmtime/commits)
---
updated-dependencies:
- dependency-name: cranelift
dependency-version: 0.136.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: wasmtime
- dependency-name: cranelift-module
dependency-version: 0.136.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: wasmtime
...
Signed-off-by: dependabot[bot] <support@github.com>
* Align cranelift-jit with the 0.136 dependency family
Update cranelift-jit alongside cranelift and cranelift-module so the JIT shares their LibCall, FuncId, and Module trait identities. Regenerate only the affected dependency lock entries, preserving the original dependency PR changes.
AI assistance covered the dependency diagnosis, alignment, and static review.
Assisted-by: OpenAI Codex:model-version-unavailable
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Support selective canonical function migration
Add hash-pinned function selection to the official Lib migration tool,
preserving canonical source bytes and rejecting ambiguous dependencies.
Assisted-by: OpenAI Codex:model version unavailable
* Detect CPython runtimes for canonical inspection feature checks
Add native runtime-cookie detection and import the exact Python 3.15
inspection helpers and tests through the official Lib migration tool.
Preserve the offline profiler argument and finite-EOF corrections.
Assisted-by: OpenAI Codex:model version unavailable
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix rounding and bounds in existing PyTime test helpers
Extract the already-exposed conversion helper prerequisite from the broader #9143 surface without adding new test C-API exports or changing time.sleep.
Assisted-by: Codex:unknown
* Complete PyTime conversion fixtures in _testinternalcapi
Stack the eight consumed conversion APIs on the existing-helper prerequisite in #9317. Keep the arithmetic local to the real fixture consumers; do not expose _testcapi or change sleep/lifecycle behavior.
Assisted-by: Codex:unknown
---------
Co-authored-by: Codex <codex@openai.com>
* Use closing-token locations for interpolated body warnings
Track CPython string-parser fragment anchors separately from escape source offsets. Preserve scoped error-line text and mode-specific final newlines with lazy sparse location indexing.
Assisted-by: OpenAI Codex:model-version-unavailable
* Fix lint checks for interpolated warning diagnostics
Assisted-by: OpenAI Codex (model version unavailable)
* Match CPython interpolated warning phases and fragment diagnostics
Reconstruct body and format-spec decoder fragments, preserve tokenizer/parser action order and pending Single/type-comment errors, and match Unicode protection plus scoped numeric and ordinary-token diagnostics.
Assisted-by: OpenAI Codex:model-version-unavailable
* Use physical final-line locations for ordinary exec warnings
Keep warning and error coordinates consistent across bare CR, CRLF, and LF while retaining file-input synthetic newlines.
Assisted-by: OpenAI Codex:model-version-unavailable
Use the collected lexical warning order for valid Exec/Eval inputs without parser-origin escape events. Keep tokenizer errors terminal and retain mixed-origin, invalid-source, and Single fallback behavior.
Assisted-by: OpenAI Codex:model-version-unavailable
Migrate macro metadata and item handling to syn 3, preserving option diagnostics and doc trimming. Add focused parser and attribute-edit tests.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
* Count positional arguments before converting any
FuncArgs::bind_for rejected surplus positional arguments only after
FromArgs::from_args had converted every declared parameter. A
conversion can run user code (__iter__ for PyIter, __index__ for
ArgIndex), so filter(None, it, 0), hex(x, 1) and pairwise(it, 0) raised
whatever that code raised instead of the TypeError CPython reports
before it touches any argument.
Check the count against FromArgs::arity() before from_args runs. For
that bound to be safe:
- The default arity() has no upper bound, since a manual impl may take
positional arguments itself. KwArgs, (), DirFd, OpenDirFd and csv's
FormatOptions declare the bound they actually have.
- A derived struct adds the upper bound of each flattened field.
- A tuple sums upper bounds with saturating_add.
Assisted-by: Claude Code:claude-opus-5-5
* Note why arity upper bounds saturate
Comment that an unbounded upper bound is usize::MAX, which is why the
tuple and derived arity() sums use saturating_add, and drop the CPython
mention from the positional count check comment.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
Publish readiness only after the main interpreter has completed its first operation, and bound the detached subinterpreter readiness wait. Preserve the original progress assertions, main deadline, and safepoint.
AI assistance covered diagnosis, source changes, review, and focused validation.
Assisted-by: OpenAI Codex:model-version-unavailable
* Reuse unchanged string results in affix removal and partitioning
Assisted-by: Codex:GPT-6
* Qualify the ASCII macro in the string test
Assisted-by: Codex:GPT-6
* Sync Python 3.15 core library tests and repr type errors
Synchronize ten selected library paths from CPython 3.15.0 at
d220409a13b77de7a6c30abe16ea90db01528edc using the canonical updater,
retaining existing RustPython adapters and failure markers.
Match generic __repr__ invalid-result errors to the qualified type-name
format required by the canonical ExceptionGroup regression, preserving
string results and exceptions raised by the implementation.
Implementation, source review, and validation were AI-assisted. The model
version identifier is unavailable; automated checks are not human
verification. Bounded validation covers 43 passes and one canonical skip,
not the full repository suites.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve original escape decoder consumed length after callbacks
Keep the original input length as consumed after successful unicode-escape
and raw-unicode-escape decoding, including error-handler input replacement.
Only report the current cursor when a non-final decode stops on incomplete
input, matching CPython's codec wrappers and incomplete exits.
Fix the canonical Unicode escape mutation regression that failed CI on
Linux, macOS and Windows. Preserve all Lib tests and existing assertions.
Bounded Linux validation: 55 passes and one canonical skip, CLI build and
strict common/VM Clippy passed. Full repository suites were not run.
Implementation, source review, and validation were AI-assisted. The model
version identifier is unavailable; automated checks are not human
verification.
Assisted-by: OpenAI Codex:model version unavailable
---------
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
Keep constructor fast paths separate from per-instance vectorcall support.
Track automatic eligibility without discarding raw support required by
PyVectorcall_Call, and recheck eligibility in retained callable wrappers.
Implementation and source review were AI-assisted. The model version
identifier is unavailable; automated checks are not human verification.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
Keep worker VM cloning separate from attachment and add a native structural regression test.
Assisted-by: OpenAI Codex
Co-authored-by: Codex <codex@openai.com>
Match ordinary single compilation by allowing later numeric warnings raised as errors to take precedence after a parser-origin escape warning. Preserve tokenizer-origin guards and the separate prompt path.
Assisted-by: Codex:unknown
Reuse the parser warning collector only for valid, recovery-eligible source. Preserve malformed-source and tokenizer-origin interpolation fallback.
Assisted-by: OpenAI Codex:model-version-unavailable
* Allow same-size bytearray.resize with exported buffers
Use the existing export snapshot or exclusive payload access to allow
same-size requests without a recursive read lock in codec callbacks.
Continue rejecting exported length changes and preserve zero filling.
Enable the CPython regression and consolidate resize coverage in the
existing bytearray snippet, including a bounded concurrent callback test.
Assisted-by: Codex:GPT-6
* remove redundant tests
* Align ctypes call ownership and C error state with Python 3.15
Keep native raised errors separate from handled exceptions and preserve them across teardown callbacks. Import the related canonical ctypes call and type contracts.
Assisted-by: OpenAI Codex: model version unavailable
* Enumerate ctypes shared libraries natively on Linux and Android
Copy loader-owned names before Python filesystem decoding and update the related canonical ctypes utility and discovery tests from CPython 3.15. Preserve existing platform paths and dllist test markers.
Assisted-by: OpenAI Codex: model version unavailable
* Enable canonical dllist system enumeration coverage on Linux
Regenerate the pinned test through update_lib patches with reviewed marker data. Preserve other platform conditions and the unavailable extension-fixture guard.
Assisted-by: OpenAI Codex: model version unavailable
* Match Python float and long-double C argument representations
Use the existing Python float formatter for float and double C argument representations. Keep long-double arguments on the canonical generic-address representation path. Preserve the unchanged canonical parameter repr assertions.
Assisted-by: OpenAI Codex: model version unavailable
* Use globals module names for eval and exec warnings
Forward the supplied scope module through compilation warnings while
preserving typed compile entrypoints and missing-name filename fallback.
* Retire the resolved exec warning-filter expected failure
Regenerate test_builtin through update_lib with all other adaptations
preserved after hosted CI reports the canonical method succeeds.
Follow CPython PyFloat_AsDouble without calling float-subclass overrides.
Keep index precedence and other conversion behavior unchanged.
Assisted-by: OpenAI Codex
Match CPython 3.15 await-result diagnostics and reject coroutine results
from custom __await__ consistently with the nondefaulted path. Preserve
native-coroutine unwrapping and wrapper state handling.
Assisted-by: OpenAI Codex:model-version-unavailable
Recognize numeric Expr::Constant values when validating signed literal
patterns, alongside parser-produced NumberLiteral nodes. Python AST
conversion uses the former representation. Accept unary plus as well as
minus and fold signed real/imaginary and complex patterns consistently.
Boolean and non-numeric constants remain excluded. Preserve the existing
parser-produced literal path and do not change source grammar.
Assisted-by: OpenAI Codex:model-version-unavailable
Validate missing-field metadata, recognize exact generic aliases for list
field defaults, and preserve surrogate names in ordered constructor errors.
Route generated AST replacement methods through the shared argument handler.
Extract the native closure from the 3.15 integration without parser/schema
changes or new library copies. Existing canonical tests remain unchanged.
Assisted-by: OpenAI Codex:model-version-unavailable
Co-authored-by: youknowdot <dot@youknowone.org>