* Align collections and testing libraries with Python 3.15
Refresh twelve production modules and canonical tests through scripts/update_lib at CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve existing RustPython unittest helpers and test guards. Accept frozendict in native defaultdict and OrderedDict union slots, matching upstream PyAnyDict_Check without changing constructors, factories, or update order.
Validated as a local stack on the exact #9189 regex/dataclasses/typing prerequisite; this dependency avoids eager typing.ByteString deprecation during unittest warning tests.
Assisted-by: OpenAI Codex: model version unavailable
* Synchronize regression runner with doctest subtest reporting
Refresh the canonical test_regrtest consumer and its direct runner/pythoninfo closure through scripts/update_lib at CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve both existing expected-failure markers. This aligns the runner test with doctest reporting two failed examples and one skipped example.
Assisted-by: OpenAI Codex: model version unavailable
Refresh the connected pathlib, glob, zipfile, tempfile, py_compile and compileall closure from CPython 3.15.0 while preserving existing RustPython test guards.
Assisted-by: OpenAI Codex:model version unavailable
* Implement import timing and cached import diagnostics
Support -X importtime and PYTHONPROFILEIMPORTTIME, including mode 2 cached imports. Track nested timing separately in each VM thread and share the output header per interpreter.
Assisted-by: OpenAI Codex:model version unavailable
* Enable canonical import timing coverage and align diagnostics
Retire only test_import_time expectedFailure after the independent runtime passes its canonical assertions. Preserve other cmd-line markers and align environment range errors with CPython.
Assisted-by: OpenAI Codex:model version unavailable
* Match encoded-byte padding for cached imports
Keep CPython cached-import minimum width semantics for UTF-8 and backslash-replaced surrogate names. Scope the diagnostic blank line to importtime without changing CPU-count errors.
Assisted-by: OpenAI Codex:model version unavailable
Expose Pattern.prefixmatch and Scanner.prefixmatch and refresh their canonical re consumers, dataclasses annotation handling, typing APIs and regression fixtures from CPython d220409a13b77de7a6c30abe16ea90db01528edc.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve original main VM through C API execution
Run and finalize the original main VM while keeping the registered attachment template available without holding its mutex across Python callbacks.
Assisted-by: OpenAI Codex:model version unavailable
* Make unraisable reporting robust at hook boundaries
Keep the existing message API and traceback formatting while handling missing, disabled, audited and failing hooks without panicking.
Assisted-by: OpenAI Codex:model version unavailable
* Separate interactive warning collection from compilation
Retain ordinary warning behavior and typed module APIs while exposing record-local parser warnings and post-warning code generation. Add a source-only lazy future-import guard.
Assisted-by: OpenAI Codex:model version unavailable
* Evaluate native stdin with shared VM record semantics
Use one evaluator for basic REPL and root transports, preserve effective inspect snapshots and future flags, and carry owned host exit status through original-main finalization.
Assisted-by: OpenAI Codex:model version unavailable
* Refresh canonical REPL tests and retire fixed failures
Run update_lib migrate from pinned CPython 3.15.0, preserving three remaining platform/runtime markers and retiring the two traceback/startup failures verified on the native evaluator.
Assisted-by: OpenAI Codex:model version unavailable
* Keep the root compiler dependency for development targets
The native evaluator now compiles through the VM. Only root benchmarks and the parse_folder example use rustpython-compiler directly, so declare it as a dev dependency while preserving VM compiler features.
Assisted-by: OpenAI Codex:model version unavailable
* Validate explicit conditional failure marker retirement
Require exact selector and original decorator evidence for each conditional expected-failure marker retired by migrate. Preserve undeclared guards and reject missing, duplicate, modified or unconsumed declarations.
Assisted-by: OpenAI Codex:model version unavailable
* Refresh canonical stdin and exception audit tests
Migrate the pinned CPython 3.15.0 modules and their canonical helper fixtures through update_lib. Retire exactly four failure markers proven obsolete by hosted CI, preserving all other existing guards.
Assisted-by: OpenAI Codex:model version unavailable
* Synchronize runpy warning attribution and document remaining capabilities
Migrate whole canonical runpy.py to pass module names to compile. Use update_lib to annotate only reproduced missing-capability cases: absent _testcapi import-event tests, unsupported startup/import-time features, and the deferred frozen-loader module-attribution caller.
Assisted-by: OpenAI Codex:model version unavailable
* Propagate interrupted native stdin reads to signal dispatch
Preserve the shared input buffer and partial bytes while returning EINTR to the VM before retrying. Exercise the transport deterministically and verify a returning SIGINT handler while pipe stdin stays open.
Assisted-by: OpenAI Codex:model version unavailable
* Reject statements after a compound statement in single mode
single_mode_multiple_statements_error now reports "invalid syntax" at the
statement that follows a compound first statement, and interactive_input
runs it right after parsing as compile() does.
The lazy `from __future__` import check moved from lazy_future_import_error
into unsupported_grammar_error, so it applies to every compile mode.
Assisted-by: Claude Code:claude-opus-5-5
* Remove passing expected failure from test_runpy
test_run_module_filter_syntax_warnings_by_module passes.
Assisted-by: Claude Code:claude-opus-5-5
* Restructure stdin execution after Modules/main.c and pythonrun.c
- src/lib.rs follows pymain_run_python: pymain_run_stdin, pymain_repl,
pymain_run_startup, pymain_run_interactive_hook and pymain_run_pyrepl
return exit codes instead of raising SystemExit.
- VirtualMachine gains run_any_stdin (_PyRun_AnyFile),
run_interactive_loop (_PyRun_InteractiveLoop) and run_simple_stdin;
run_shell feeds rustyline lines into run_interactive_loop, and
sys._baserepl calls run_any_stdin.
- print_uncaught_exception (PyErr_Print) replaces
report_uncaught_exception, and handle_system_exit_and_keyboard_interrupt
replaces handle_reported_exception.
- An unhandled KeyboardInterrupt is recorded and the process exits
through SIGINT after finalization.
- Interpreter::run_main replaces run_with_exit_status and InterpreterExit;
rustpython_capi::run_main_interpreter takes an exit-code callback.
- config_set_inspect audits cpython.PyConfig_Set and rebuilds sys.flags
through set_flag_obj (_PySys_SetFlagObj); the inspect state is an
AtomicBool and dict replace_by_identity is removed.
- add_main_module (PyImport_AddModuleRef("__main__")) is used by the
interactive and simple-file paths.
- The interactive parser warning helpers take their state directly.
Assisted-by: Claude Code:claude-opus-5-5
* Exit through Py_Exit from PyErr_Print and run the basic REPL via stdin
- print_uncaught_exception (PyErr_Print) calls exit_process (Py_Exit) for a
SystemExit when inspect mode is off, instead of returning the exception.
run_interactive_loop no longer checks SystemExit itself and flushes after
printing an error; sys._baserepl returns None.
- exit_process finalizes through VirtualMachine::finalize_ex, which holds
the Py_FinalizeEx steps split out of Interpreter::finalize, and exits
through host_env::os::exit_with_cleanup (C exit()).
- The basic REPL on a terminal (PYTHON_BASIC_REPL, or _pyrepl missing)
runs run_any_stdin instead of the rustyline shell.
- run_shell saves the history after every line.
Assisted-by: Claude Code:claude-opus-5-5
* Display exceptions through PyErr_Display and track the main thread running __main__
- display_exception (PyErr_Display) and display_exception_to (_PyErr_Display)
try traceback._print_exception_bltin before the native printer and flush
the file. PyErr_Print's excepthook fallback, print_exception and
sys.excepthook use them. A missing sys.stderr is reported with
dump_object (PyObject_Dump); a None sys.stderr prints nothing.
- Paths gains program_name (argv[0]) from getpath. The "can't open file"
message uses it with strerror(errno) and goes to sys.stderr.
- running_main holds the ident of the thread running __main__.
pymain_run_python sets it around running the main code, Py_Exit clears it,
the fork child reinitializes it, and _interpreters.is_running reads it
instead of treating the main interpreter as always running.
- Interpreter::run_main clears the unhandled KeyboardInterrupt flag before
running and applies exit_sigint after finalizing; finalize no longer
does.
- run_interactive_loop returns a SystemExit raised outside inspect mode
again and no longer flushes after printing an error; run_shell saves the
history once after the loop.
- pymain_set_inspect reports its error through print_uncaught_exception.
Assisted-by: Claude Code:claude-opus-5-5
* Treat a parse error at the end of the source as incomplete input
A parser error that starts at the end of the source is reported as
_IncompleteInputError when incomplete input is allowed, so the
interactive loop and codeop keep reading after `try:` and its block or
after a decorator line.
Assisted-by: Claude Code:claude-opus-5-5
* Place syntax errors on tokens made up at the end of the input
A parse error on the NEWLINE, DEDENT or ENDMARKER the tokenizer makes up
at the end of the input now carries an EofToken: the number of lines
read and the last line. SyntaxError takes its lineno and text from it,
and its offset is that line's length with end_offset -1, or 0 for both
when the error is raised at the token itself (the generic syntax error
and a missing forced `:` or `(`). Exec input that does not end with a
newline is checked with one appended.
Assisted-by: Claude Code:claude-opus-5-5
* Slice the source with get when checking an indented block error at EOF
Assisted-by: Claude Code:claude-opus-5-5
* Rename the host exits after C exit() and fix wasi and Windows builds
- host_env::os::exit now calls the C exit() on every platform; on Windows
std::process::exit ends in ExitProcess, so it flushes the Rust stdout
and calls libc::exit there. The former exit, which calls _exit(), is
now exit_immediately, used by os._exit, faulthandler and
posixsubprocess.
- errno::strerror_string is available on wasi.
- PyGlobalState::reinit_running_main is built only where its fork caller
is.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
* Preserve interpolation source text and canonical metadata
Source-only checkpoint; candidate validation and the existing annotation expectation reconciliation remain pending.
Assisted-by: OpenAI Codex:model version unavailable
* Align existing annotation expectations with CPython metadata
Update only the nine existing expected strings confirmed against pinned CPython 3.15, with explicit user approval.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve template metadata through compilation and interactive input
Escape literal debug prefixes, retain None AST expression metadata internally, and continue incomplete triple-quoted t-strings in the existing shell.
Assisted-by: OpenAI Codex:model version unavailable
* Classify normalized unclosed brackets as REPL line continuations
Assisted-by: OpenAI Codex:model version unavailable
* Nest equivalent REPL parse-error alternatives for Clippy
Assisted-by: OpenAI Codex:model version unavailable
* Remove fulfilled annotation migration lint workaround
The canonical expected strings no longer trigger literal_string_with_formatting_args, so the previous lint expectation is obsolete.
Assisted-by: OpenAI Codex:model version unavailable
* Complete lazy-import exception and traceback library closure
Copy canonical traceback and legacy exception mappings with preserved RustPython guards. Copy explicit non-Python library assets by exact path so exception hierarchy data does not expand into the entire test package.
Assisted-by: OpenAI Codex:model version unavailable
* Provide Python 3.15 traceback metadata for missing modules and attributes
Preserve AttributeError context for missing class attribute deletion, matching type_update_dict. Expose canonical generated missing-stdlib messages through the native sysconfig modules without importing CPython build-specific disabled-module assumptions.
Assisted-by: OpenAI Codex:model version unavailable
* Align startup home and venv paths with canonical sysconfig closure
Assisted-by: OpenAI Codex:model version unavailable
* Preserve selected stdlib and empty home prefix fallback
Assisted-by: OpenAI Codex:model version unavailable
* Collapse startup exec-prefix fallback condition
Assisted-by: OpenAI Codex:model version unavailable
* Preserve startup search order and freeze the ZIP bootstrap
Align zipimport and its tests with CPython 3.15.0 via update_lib, preserving inherited test guards. Keep build-time fallback paths after configured paths and the default ZIP, while respecting customized embedding paths.
Assisted-by: OpenAI Codex:model version unavailable
* Retire proven trace coverage guards through update_lib
Both canonical coverage-file tests execute successfully after preserving startup search order. Preserve the other two inherited guards and restore canonical Python 3.15 JIT optimizer decorators.
Assisted-by: OpenAI Codex:model version unavailable
* Align Windows symlink helper with canonical Python home layout
Import the pinned CPython 3.15 PythonSymlink class through a narrow, hash-pinned update_lib mode. Preserve canonical home/VPATH behavior and explicitly supply RustPython build stdlib to the Windows child without changing runtime PYTHONHOME semantics or skipping tests.
Assisted-by: OpenAI Codex:model version unavailable
* Reset surviving thread completion locks after fork
Reinitialize every live thread handle completion mutex and condition variable before skipping the surviving or not-yet-started handle. Preserve their completion payload and state, and retain the existing dead-thread cleanup.
Assisted-by: OpenAI Codex:model version unavailable
complex.__eq__ and __ne__ converted an int operand to f64 before
comparing, so a complex whose real part is the float nearest to a large
int compared equal to that int even when the values differ:
complex(2**53 + 1) == 2**53 + 1 returned True, while
float(2**53 + 1) == 2**53 + 1 returns False and the two objects hash
differently.
When the imaginary part is zero, compare the real part against the
exact integer with float_ops::eq_int, the helper float's own comparison
uses. This matches CPython, which hands an int operand to float's rich
comparison. test_complex.test_richcompare_boundaries now passes, so drop
its expectedFailure marker.
Assisted-by: Claude Code:claude-opus-5-5
* Align code metadata and monitoring event semantics with Python 3.15
Preserve canonical qualified-name interning and subclass values, normalize valid debug-range tables, and correct event-specific monitoring disable and callback ownership boundaries.
Assisted-by: OpenAI Codex:model version unavailable
* Import canonical monitoring shutdown helper
Copy the missing test_monitoring dependency from pinned CPython 3.15.0 through scripts/update_lib, retaining existing suite guards.
Assisted-by: OpenAI Codex:model version unavailable
* Match observed monitoring source layers and tool release ordering
Model active source instrumentation across all subscribed tools instead of unconditional legacy edge pairing. Preserve tool names during unlocked callback finalization before releasing them.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve code qualnames and monitoring event-site identity
Retain decoded WTF8 qualnames, use exact-str marshal dispatch, and model wrapped branch dispatch with physical DISABLE sites. Retire the proven monitoring shutdown guard through update_lib.
Assisted-by: OpenAI Codex:model version unavailable
* Align weak-reference collection with Python 3.15 finalization
Trace and retain owned callback edges independently of weak referent links.
Clear callback-bearing weakrefs before finalizers, suppress callbacks from
unreachable weakrefs, and close remaining weakref ingress after resurrection
checks while the world is stopped. Publish and unlink intrusive nodes safely.
Refresh weakref and canonical weakref/GC/finalization tests through update_lib
from pinned CPython 3.15.0. Retire four obsolete guards only after fresh body
passes, retaining applicable RustPython limitations.
Assisted-by: OpenAI Codex:model version unavailable
* Refresh canonical IO tests for weakref finalization
Migrate the complete CPython 3.15.0 test_io package at d220409 with the
fail-closed legacy-map updater, preserving all ten existing guards. Retire
the seven consolidated standalone suites and update io/file dependency
paths with mapping regression tests.
The canonical GC tests ignore ResourceWarning without retaining its
source, so callback-free weakrefs correctly reflect surviving owners.
This closes the stale test dependency exposed by the lifecycle change.
Assisted-by: OpenAI Codex:model version unavailable
* Protect weakref callbacks with the original referent stripe
Follow CPython's free-threading weakref locking model instead of keeping
an independent callback RwLock. Retain the original referent stripe key
so callback access stays synchronized after GC clears the referent.
Unlink and steal callbacks under that stripe, then release ownership
outside the lock. Preserve synchronization for running-world GC paths
and gc.get_referents while keeping ordinary weakref upgrades unchanged.
Assisted-by: OpenAI Codex:model version unavailable
* Defer weakref GC tracking until referent publication
Keep freshly allocated weakrefs out of GC's object lists until they are
linked and their referent is published. Release the referent stripe before
tracking, since tracking can collect and invoke finalizers. Generic reuse
losers remain untracked.
Exercise the allocator boundary directly for reference, proxy, callable
proxy and subclass payloads, and ensure completed constructors track their
objects. This prevents observers from retaining a half-built dead weakref
that later becomes live.
Assisted-by: OpenAI Codex:model version unavailable
* Retain the original weakref stripe lock like CPython
Store a safe handle to the selected static weakref stripe instead of
retaining and rehashing the referent address. Keep the same lock after
referent clearing, matching CPython free-threaded weakrefs_lock. The
nonthreaded handle is zero-sized and introduces no locking.
Preserve lock selection, acquire/release ordering, fork reset, deferred
GC publication, and callback-owner release outside the stripe. No new
locks or unsafe code are needed.
Assisted-by: OpenAI Codex:model version unavailable
Import canonical descriptor tests through update_lib, preserving existing guards. Support tuple member slots, distinguish base reassignment from class layout compatibility, and share object-owned generic descriptors.
Assisted-by: OpenAI Codex:model version unavailable
* Refresh canonical importlib and preserve native import callback
Cache the original builtin __import__ callback so CPython 3.15 importlib's
hierarchical locking uses the existing native parent-initialization path.
Refresh the complete canonical importlib and related test/helper families
from CPython d220409a13b77de7a6c30abe16ea90db01528edc through update_lib.
Preserve both nondecorator importlib guards in the updater. Add explicit
hash-pinned removal of reviewed obsolete canonical files, with full
preflight, dry-run, idempotence and refusal tests. Preserve empty fixtures.
Assisted-by: OpenAI Codex:model version unavailable
* Complete canonical inspect and types closure for importlib metadata
Refresh whole canonical inspect/types production and related test families
through update_lib after hosted CI exposed stale __cached__ consumers.
Add coroutine and async-generator state getters, with closed-state priority
for reentrant frame-local finalizers, and expose the existing frame-locals
proxy type with its CPython class documentation.
Preserve the optional _datetime and unittest import blocks through a narrow
migration adapter. Retain canonical assertions and existing guards; record
the missing LazyImportType expectation before adding a conditional expected
failure, and capability-skip only the two absent-_testcapi CLI fixtures.
Assisted-by: OpenAI Codex:model version unavailable
* Reject canonical removal junctions and read UTF-8 manifests
Reject junctions alongside symlinks in the existing path-component preflight and revalidation. Decode removal manifests explicitly as UTF-8. Add regressions for whole-batch refusal, revalidation, and Unicode dry-run/apply/idempotence.
Assisted-by: OpenAI Codex:model version unavailable
Warn on the deprecated shared string keyword and refresh the complete
hashing libraries, canonical suites, and shared helper from CPython
v3.15.0 (d220409a13b77de7a6c30abe16ea90db01528edc) with update_lib.
Keep the six-file family independent and add no RustPython test guards.
Assisted-by: OpenAI Codex:model version unavailable
Refresh ssl.py and test_ssl.py through update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc without local test changes. Implement rustls cipher-suite, group and signature policy, negotiated-group reporting, EOF and session-policy behavior.
Keep OpenSSL and wasm API imports compatible, with genuine version-gated queries and honest unsupported capabilities. Repair OpenSSL callback ownership and traversal, callback exceptions, EOF and shutdown, PHA, session destruction, and system-error decoding exposed by canonical coverage. Preserve existing I/O locking; the inherited optional-backend full-duplex hang remains a separate driver prerequisite.
Assisted-by: OpenAI Codex:model version unavailable
Correct quote escaping, replacement count keyword binding, signed-minimum hex grouping, and clear storage/export handling. Migrate canonical bytes coverage through fail-closed preservation of the existing RustPython customizations, and retire only two freshly verified formatting guards.
Assisted-by: OpenAI Codex:model version unavailable
* Fix deprecated PyO3 code input import in benchmarks
Use the canonical code module path introduced in PyO3 0.30 without suppressing deprecation warnings.
Assisted-by: OpenAI Codex:model version unavailable
* Align runtime metadata and annotation cache contracts with Python 3.15
Preserve function name identity, implicit wrapper metadata and slice generic aliases. Match annotation dictionary and reentrant publication contracts, releasing displaced Python owners outside locks in the required phases. Refresh the matching canonical annotation tests through update_lib.
Assisted-by: OpenAI Codex: gpt-6.1-sol
* Refresh canonical generic alias coverage for slice
Migrate the complete Python 3.15 test_genericalias file through update_lib. Preserve the full canonical type list and capability guards so normal test runs cover slice subscripting.
Assisted-by: OpenAI Codex: gpt-6.1-sol
---------
Co-authored-by: Codex <codex@openai.com>
* Implement native Unicode 17 grapheme iteration
Add the CPython extended grapheme state machine, full-codepoint properties, and traced Segment/iterator types with positional index handling. Refresh canonical unicodedata tests through update_lib while retaining pending markers. Include a losslessly range-compressed exact-final property oracle and differential test.
Source-reviewed implementation; candidate runtime validation remains pending. Reference property generation completed against the pinned CPython Unicode extension.
Assisted-by: OpenAI Codex:model version unavailable
* Bind grapheme Segment methods to the Python object
Use the required Py<Segment> receiver for native descriptors; preserve payload ownership and representation behavior.
Assisted-by: OpenAI Codex:model version unavailable
* Use explicit object receivers for Segment descriptors
Keep the inherent impl on the local payload and receive &Py<Self>, as required for stdlib classes outside the VM crate.
Assisted-by: OpenAI Codex:model version unavailable
* Mark grapheme property lookups as must-use
Satisfy strict Clippy for the three pure property functions without changing their behavior.
Assisted-by: OpenAI Codex:model version unavailable
* Enable validated Unicode grapheme canonical tests
Remove seven stale expected-failure markers through update_lib metadata after native property parity, canonical methods, full Unicode 17 grapheme corpus, and reference-cycle GC validation.
Assisted-by: OpenAI Codex:model version unavailable
* Accept platform line endings in grapheme oracle header
Compare the complete provenance line without its line ending so the same exact Unicode 17 reference is accepted after Windows checkout conversion. Keep the complete code-point property sweep unchanged.
Assisted-by: OpenAI Codex:model version unavailable
* Keep grapheme property regression in test module
Move the existing complete Unicode 17 property regression into the existing cfg(test) module to satisfy strict Clippy. Preserve the fixture, assertions, code-point coverage, and platform-independent provenance line check unchanged.
Assisted-by: OpenAI Codex:model version unavailable
* Qualify grapheme iterator return type for generated bindings
Assisted-by: OpenAI Codex:model version unavailable
* Fix deprecated PyO3 code input import in benchmarks
Use the canonical code module path introduced in PyO3 0.30 without suppressing deprecation warnings.
Assisted-by: OpenAI Codex:model version unavailable
Import the canonical socket libraries and tests through update_lib, preserving the existing AF_ALG expected failures. Match setsockopt index/buffer conversion and error ordering, mask optlen with the final CPython deprecation warning, reject oversized Windows buffers before the host call, and preserve arbitrary-precision getaddrinfo ports and empty canonical names.
Assisted-by: OpenAI Codex:model version unavailable
* Align OS argument conversion and syscall handling with Python 3.15
Import canonical os tests through update_lib, retaining existing guards. Preserve raw descriptor validation, errno, audit ordering, signal retries and unlocked sendfile buffers.
Validation: independent source review passed; matching release build and nine bounded canonical cases pending.
Assisted-by: OpenAI Codex:model version unavailable
* Import canonical root-user test support for OS package
Add hash-pinned selective assignment migration within test.support and import the three Python 3.15.0 privilege helpers plus their public exports. Preserve unrelated support helpers and existing test markers.
Validation: 177 host updater tests pass; byte-identical canonical helper provenance verified. Independent source review passed. Native import validation pending integration onto current main.
Assisted-by: OpenAI Codex:model version unavailable
Preserve lock ownership and elapsed timeouts during interruptible waits; reject RLock constructor arguments and use replacement encoding for thread names. Generate associated libraries and tests from CPython d220409a13b77de7a6c30abe16ea90db01528edc using update_lib, retaining five existing markers and retiring one proven removed test owner.
AI-assisted source preparation and review. Runtime validation remains pending.
Assisted-by: OpenAI Codex:model version unavailable
bytearray.__mod__ copied the format and ran the arguments' __repr__,
__str__, __bytes__ and __index__ without holding an export, so a callback
could clear or extend the format and formatting went on with the old
copy:
fmt = bytearray(b"%a end")
class S:
def __repr__(self):
fmt.clear()
return "E"
fmt % S() # bytearray(b'E end'), fmt left empty
CPython holds a buffer on the format for the whole call, so the resize
fails with BufferError and the format is left as it was. Taking an export
for the duration of __mod__ does the same here, the way bytearray.join
already does for its separator.
This lets test_mod_concurrent_mutation in test_bytes run again.
Assisted-by: Claude Code:claude-opus-5-5
* Update ten Python library modules to Python 3.15 final
Migrate dependency-ordered linecache, locale, _pydecimal, decimal, random, uuid, wave, _strptime, zipapp and poplib with their canonical tests and WAV fixtures using update_lib.
Assisted-by: OpenAI Codex:model version unavailable
* Align dependent datetime and warning tests with Python 3.15 final
Generate complete dependent tests and pure datetime through update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve the existing tracemalloc expected failure. Pass warning module metadata to WarningMessage, use sys context after stack exhaustion, and identify invalid category classes with the existing qualified-name helper.
Assisted-by: OpenAI Codex:model version unavailable
object_getstate_default kept the __slotnames__ list read-locked while it
looked up each slot attribute. A getter or __getattr__ that changed the
list (as in test_descr.test_issue24097) then waited forever for the write
lock. A non-str entry in a cached __slotnames__ hit an unwrap and
panicked.
Take a reference to each name and drop the lock before the lookup, raise
TypeError for a non-str name, let errors other than AttributeError
propagate, and check the list size after each item, as CPython does.
Assisted-by: Claude Code:claude-opus-5-5
* Align base64 encodings with Python 3.15
Accept hexlify keyword arguments and migrate base64 and its tests directly from CPython v3.15.0 using update_lib.
Assisted-by: OpenAI Codex:model version unavailable
* Update Hypothesis fallback for multi-argument examples
Import the CPython 3.15 final fallback helper with scripts/update_lib migrate. Keep canonical base64 round-trip examples unchanged while passing their positional arguments as one subTest message.
Validation: six canonical base64 methods, fourteen fixed examples; bounded source-only runs with the existing same-native PR binary.
Assisted-by: OpenAI Codex:model version unavailable
* Sync ten foundational Python libraries with CPython 3.15
Migrate _py_abc, stat, genericpath, ntpath, posixpath, functools, gettext, string, optparse, and mimetypes with related canonical tests using scripts/update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve the existing pure LRU hash-count expected failure.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve positional-only annotation order for singledispatch
Emit positional-only annotations before regular positional annotations, matching declaration order and the canonical functools regression coverage.
Assisted-by: OpenAI Codex:model version unavailable
Separate raw descriptor inspection from owned tracking, update flush and naming behavior, and expose resize only on implemented backends. Migrate canonical mmap tests using update_lib while preserving existing RustPython guards.
Assisted-by: OpenAI Codex:model version unavailable
* Align asyncio initialization and future state with Python 3.15
Reject native Future and Task reinitialization, validate task contexts, and restore task registration after failed eager context entry. Generate matching asyncio and concurrent Future sources and tests with update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve the existing pending-task reinitialization regression.
Assisted-by: OpenAI Codex:model version unavailable
* Remove asyncio snippet duplicating canonical reinitialization coverage
Keep the exact-final Lib tests as the reinitialization coverage instead of adding a new snippet for the same contract. Native and library implementation bytes remain unchanged.
Assisted-by: OpenAI Codex:model version unavailable
* Validate both objects in asyncio awaited-by helpers
Match CPython by ignoring non-native Future/Task waiters in add and discard. Keep the existing native reentrant hashing fixture reachable using Future subclasses and use native instances for its membership checks.
Assisted-by: OpenAI Codex:model version unavailable
Generate the JSON library and selected tests with update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc, preserving native bootstrap workarounds and test markers. Exclude generated cache directories at the library copy boundary.
Assisted-by: OpenAI Codex:model version unavailable
* Align OrderedDict view inheritance and repr with CPython
Use dict view base payloads and inherited descriptors while preserving ordered iteration. Snapshot actual view iterators before rendering element reprs.
Assisted-by: OpenAI Codex:model version unavailable
* Sync pprint and its tests from CPython 3.15.0
Import the related library update using scripts/update_lib migrate from d220409a13b77de7a6c30abe16ea90db01528edc, preserving exact final source bytes.
Assisted-by: OpenAI Codex:model version unavailable
Import stringprep and related codecs from CPython 3.15.0 using scripts/update_lib. Preserve the existing Windows codec test marker.
Assisted-by: OpenAI Codex:model version unavailable
* Support frozen ElementTree attribute mappings
Preserve assigned mapping identity while copying constructor attributes, and use checked union ownership through Element operations.
Assisted-by: OpenAI Codex:gpt-6.1-sol
* Sync final ElementTree runtime and companion tests
Import ElementTree.py from CPython d220409a13b77de7a6c30abe16ea90db01528edc through update_lib migrate. Copy six complete canonical tests with update_lib copy-test, preserving all surrounding test markers. This aligns pure-Python and native frozendict diagnostic expectations and covers the runtime import companion changes.
Assisted-by: OpenAI Codex:model version unavailable
Add Instruction::BuildListFromArg = 219 (stack effect: pop 1, push 2): pop
the iterator, push an empty list whose capacity is the iterator's length
hint, push the iterator back. A failing length hint is ignored unless it is
SystemExit or KeyboardInterrupt.
With CompileOpts::build_list_from_arg set, a list comprehension with one
generator, no `if` and no `async for` emits it in place of BUILD_LIST 0 on
the non-inlined path and in place of BUILD_LIST 0; SWAP 2 on the inlined
path. The option defaults to false, so default output is unchanged.
Assisted-by: Claude
* Preserve truncating FileIO mode and sync canonical IO compatibility
Keep truncation metadata in both host backends so writable update streams report wb+. Synchronize the complete final CPython _pyio module and two complete canonical mode test definitions through scripts/update_lib.
Assisted-by: OpenAI Codex: model identifier unavailable
* Update gzip, tarfile, and shutil from CPython 3.15
Regenerate six Lib files using scripts/update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve upstream tests without agent-added marks.
Assisted-by: OpenAI Codex:model version unavailable
* Sync canonical spooled tempfile mode expectation
Copy the complete TestSpooledTemporaryFile.test_properties definition from CPython 3.15.0 final d220409a using scripts/update_lib copy-test. Preserve all surrounding test content and existing markers.
Assisted-by: OpenAI Codex:model version unavailable
---------
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
* Add Python 3.15 math APIs using pymath
Pin pymath to merged dd1e9a4cf26d68caf3b549c09476f52e356e16a3
and expose isnormal, issubnormal, signbit, fmax and fmin through thin
wrappers. Share the existing integer functions through math.integer
and _math_integer, matching CPython module identity and metadata.
Migrate test_math.py and test_math_integer.py via scripts/update_lib
from CPython d220409a13b77de7a6c30abe16ea90db01528edc, preserving the
existing Windows remainder marker. Add bounded Python snippet coverage.
AI assistance: OpenAI Codex implemented and source-reviewed this change,
ran update_lib, and performed focused automated validation. No human
manual testing is claimed.
Assisted-by: OpenAI Codex:model version unavailable
* Track integer math tests in library updates
Assisted-by: OpenAI Codex:model version unavailable
* Implement Python 3.15 type alias and variadic metadata
Add TypeAliasType qualified names and writable module metadata, and TypeVarTuple raw bounds and variance. Preserve Unicode names and validate arguments before invoking truthiness callbacks.
AI assistance: OpenAI Codex implemented and source-reviewed this split, prepared regressions, and ran focused automated validation. No human manual testing is claimed.
Assisted-by: OpenAI Codex:model version unavailable
* Sync canonical typing repr tests with Python 3.15 final
Copy six complete test definitions from CPython d220409a13b77de7a6c30abe16ea90db01528edc using scripts/update_lib copy-test with source and destination SHA256 pins. Preserve all surrounding tests and markers; no manual assertion edits or skips.
AI assistance: OpenAI Codex diagnosed old expected representations, performed the official copies and independent provenance review, and ran the six exact tests with the existing candidate release binary. All six pass; full suites were not rerun locally.
Assisted-by: OpenAI Codex:model version unavailable
Extract _codecs._normalize_encoding and delegate encodings.normalize_encoding
to it using the final CPython 3.15 library source. Preserve case and dots,
validate UTF-8 before NUL truncation, and retain wrapper warnings and bytes
conversion. Add bounded regression assertions without changing registry keys.
Lib/encodings/__init__.py was updated via scripts/update_lib migrate from
CPython d220409a13b77de7a6c30abe16ea90db01528edc, with byte-identical output.
AI assistance: OpenAI Codex implemented and source-reviewed this split,
ran update_lib, prepared bounded regressions and performed focused automated
validation. No human manual testing is claimed.
Assisted-by: OpenAI Codex:model version unavailable
* Align compiler and VM with final CPython 3.15 bytecode
Reconstruct the compiler-only baseline from validated487ae47 on the current main and frozen mapping prerequisitec78d811. Preserve the full source delta while dropping obsolete prerequisite ancestry; detailed old-to-new provenance is retained in the recovery artifact.
Assisted-by: OpenAI Codex: model identifier unavailable
* Fix final script validation, exception cleanup and private cache contracts
Replay reviewed compiler CI repairs 2191a9d, 1f1fe04, a2dacaf on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.
Assisted-by: OpenAI Codex: model identifier unavailable
* Align canonical compiler fixtures and generator frame state
Replay reviewed compiler CI repairs 476bb74 on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.
Assisted-by: OpenAI Codex: model identifier unavailable
* Preserve code-name owners and final warning and constant-fold contracts
Replay reviewed compiler CI repairs 6482adf on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.
Assisted-by: OpenAI Codex: model identifier unavailable
* Skip unavailable monitoring C API tests before tool registration
Replay reviewed compiler CI repairs 246c309 on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.
Assisted-by: OpenAI Codex: model identifier unavailable
* Assert exact final constant-list iterable folding
Replay reviewed compiler CI repairs 7ecedcf on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.
Assisted-by: OpenAI Codex: model identifier unavailable
* Align local monitoring events and exception lifecycle state with final 3.15
Replay reviewed compiler CI repairs ec206b1, 191fe58 on the frozen current prerequisite. Intermediate compile/diagnostic corrections are combined where they address the same failure.
Assisted-by: OpenAI Codex: model identifier unavailable
* Align 3.15 code objects and codegen with CPython
- Store co_consts, co_names, co_localsplusnames, co_localspluskinds,
co_linetable, co_exceptiontable and co_name as objects on PyCode;
build co_code and the varnames/cellvars/freevars tuples lazily in
_co_cached, with co_code deoptimized through deopt_code.
- Move the compiler constant cache (_PyCode_ConstantKey,
const_cache_insert) to builtins/code/const_cache.rs.
- Write every code field with w_object in marshal and pass the read
field objects to MarshalBag::make_code through CodeFields.
- Emit RETURN_GENERATOR/POP_TOP in enter_scope and place SETUP_CLEANUP
after them; drop the generator part of insert_prefix_instructions.
- Add PyCode::first_traceable (_co_firsttraceable) for
_PyFrame_IsIncomplete and sys.monitoring.
- Follow the CPython DISABLE branches in sys.monitoring, the
check_matched signature in warnings, the 3.15 % format error
messages for str and bytes, code_returns_only_none, and the FOR_ITER
stack analysis.
- Compute IMPORT_NAME flags with in_exception_handler.
- Replace the linetable/exceptiontable byte tests in codegen with
dis(show_positions=True) insta snapshots in _opcode.
- Remove the opcode metadata verification tooling, byte-exact
scripts, private cache tests and redundant snippets.
- Restore test_code.py and test_monitoring.py to v3.15.0 plus
RUSTPYTHON markers.
Assisted-by: Claude Code:claude-opus-5-5
* Remove generator snippet checks covered by Lib/test
Drop extra_tests/snippets/generator_iterator_prefix.py. Its loop,
delegation, async, f_back and never-awaited checks are covered by
test_generators, test_coroutines, test_asyncgen, test_yield_from and
test_monitoring. Move the remaining checks into existing files:
genexpr prefix tracing and monitoring into stdlib_sys.py, and the
caller frame seen from the eager iterator into stdlib_sys_getframe.py.
Assisted-by: Claude Code:claude-opus-5-5
* Emit the generator prefix for top-level await modules
Module code compiled with PyCF_ALLOW_TOP_LEVEL_AWAIT and marked
ste_coroutine now starts with RETURN_GENERATOR; POP_TOP. The prefix and
RESUME emission move into emit_scope_prefix, shared by enter_scope and
the module entry points, as in codegen_enter_scope. Fixes
test_builtin.test_compile_top_level_await.
Assisted-by: Claude Code:claude-opus-5-5
* Allow the c_long cast in _opcode.stack_effect
c_long is i32 on Windows, where clippy reports the cast to i32 as
unnecessary.
Assisted-by: Claude Code:claude-opus-5-5
* Update malachite crates to 0.14.0
pymath requires malachite-bigint ^0, so the example projects, which
have no lock file, resolve it to 0.14.0 while the workspace pinned
0.13.0, and fail to build.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: dot <dot@youknowone.org>
Regenerate sixteen Lib files with scripts/update_lib from CPython d220409a13b77de7a6c30abe16ea90db01528edc. Preserve inherited test markers without manual Lib edits.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
Regenerate nine utility modules and associated tests with scripts/update_lib
from CPython d220409a13b77de7a6c30abe16ea90db01528edc.
Preserve existing mimetypes fixes by excluding that module from this split.
OpenAI Codex assisted with source audit, update_lib execution, and focused
release validation: 64 tests passed, one existing WASI-only skip.
Assisted-by: OpenAI Codex:model version unavailable
* Restore consolidated frozendict implementation on current main
Preserve reverse dictionary iterator fixes and the 3.15 frame imports. Keep library refreshes separate pending the runtime dependency sequencing decision.
Assisted-by: OpenAI Codex:model identifier unavailable
* Support scoped canonical test updates in update_lib
Index conditional test classes and methods without crossing namespaces, reject ambiguous targets, and preserve inherited override indentation. Add hash-pinned whole-test copying that verifies execution context and exact source bytes, with focused Python fixtures.
Assisted-by: OpenAI Codex:model identifier unavailable
* Align frozendict copy support and tests with CPython 3.15
Import exact-final copy.py with update_lib; defer Mapping ABC registration to the later library stage. Generate only proven marker corrections, retain observed debug recursion-limit expected failures, and copy the complete canonical builtin-doc discovery test using hash-pinned update_lib copy-test.
Assisted-by: OpenAI Codex:model identifier unavailable
* Preserve decorator rationale during canonical test copying
Reject differing decorator source blocks even when their ASTs match. Cover inline and multiline marker comments, guarded async methods, and CLI no-write behavior.
Assisted-by: OpenAI Codex:model identifier unavailable
* Finish frozendict with borrowed PyAnyDict views
Use the landed PyRef target model for a transparent dict/frozendict header
view, retaining objects explicitly with PyRef<PyAnyDict>. Keep targets
sealed and preserve mutable-only entry points. Borrow frame globals from
the object header rather than movable reference wrappers.
Unify exact-TypeError key diagnostics with final CPython semantics,
including callback failure propagation and no explicit cause. Keep the
Python regressions in builtin_dict and test reference layout/ownership
in Rust. Preserve existing canonical library updates.
Assisted-by: OpenAI Codex:model identifier unavailable
* Align frozendict with CPython and use CPython 3.15 tests
- Name the target type in unhashable key errors through
PyDict::update_arg (dict_update_arg), replacing the separate
PyFrozenDict::merge_into copy of the merge logic.
- Split the | operator into dict_or (_PyDict_Or) and frozendict_or.
- Return the argument from frozendict(frozendict) only when the called
type is frozendict.
- Call through the vectorcall slot in PyCallable::invoke when there
are no keyword arguments, instead of special-casing frozendict.
- Add ensure_builtins (_PyEval_EnsureBuiltins) for eval/exec, and
insert __builtins__ for source strings regardless of globals type.
- Read __warningregistry__ and __name__ from stored globals entries and
accept only None or str for the module name in setup_context.
- Remove the unused PyFrozenDict::from_object.
- Migrate test_dict.py, mapping_tests.py, test_copy.py and
test_builtin.py to v3.15.0 with update_lib, and add
test_import/data/syntax_warnings.py.
- Drop builtin_dict.py frozendict tests covered by those modules,
keeping the descriptor and namespace integration tests.
Assisted-by: Claude Code:claude-opus-5-5
* Update crates/vm/src/builtins/dict.rs
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
Co-authored-by: Jeong, YunWon <69878+youknowone@users.noreply.github.com>
Sync enum and its regression tests from CPython v3.15.0rc2 (435c9e5a798c99653e3ab64ce29baed0e4f3dfee). Preserve the two existing RustPython expected-failure decorators. Keep this first migration slice limited to enum without changing the declared Python target or native runtime.
AI assistance: Codex/OpenAI reconstructed the upstream sync, reviewed the diff, and ran validation. The runtime did not expose the exact model version.
Assisted-by: Codex:model-version-unavailable
Co-authored-by: youknowdot <336763669+youknowdot@users.noreply.github.com>
* Sync library behavior with CPython 3.15.0
Import exact d220409a13b77de7a6c30abe16ea90db01528edc sources through scripts/update_lib migrate, preserving the existing logging test marker. Retain focused Python license and mock property regressions outside Lib. This later Python-stage change requires native binascii wrapcol support; listener DNS runtime validation remains out of scope.
Assisted-by: OpenAI Codex:model identifier unavailable
* Keep the library update limited to upstream files
Remove the two PR-added extra_tests snippets as requested in review. Preserve the script-migrated CPython library files and their canonical tests unchanged.
Assisted-by: OpenAI Codex:model identifier unavailable
* Implement Python 3.15 base64 encoding and decoding
Follow CPython 3.15.0 final d220409a13b77de7a6c30abe16ea90db01528edc for base64 options, alphabets, padding and canonical decoding. Keep reverse-table caches in traced module-native state and preserve module-bound callable semantics. Add bounded Python regressions without editing Lib.
Assisted-by: OpenAI Codex:model identifier unavailable
* Complete binascii codecs for canonical Python 3.15 tests
Migrate Lib/test/test_binascii.py unchanged from CPython 3.15.0 final using scripts/update_lib and replace the superseded custom base64 snippet. Implement the base32, Base85, Ascii85 and hex ignorechars APIs required by the canonical suite. Share the existing module-bound original-key alphabet cache across base32/base64/base85 and preserve argument and buffer cleanup semantics. Keep the existing base64 kernels and VM state integration unchanged.
Assisted-by: OpenAI Codex:model identifier unavailable
* Target Python 3.15 using the final upstream reference
Update active version and comparison configuration to Python 3.15.0. Preserve the alpha implementation status, actual bytecode format, and existing libraries pending separate migration. Align generated library-upgrade workflow pins without changing permissions or actions.
Assisted-by: OpenAI Codex:model identifier unavailable
* Adapt essential snippet contracts to Python 3.15 final
Preserve existing coverage while following verified final behavior for script metadata, builtin signatures and loading, AST fixture construction, memoryview diagnostics, mmap search bounds, and struct format errors. The unchanged final comparator exposes the earlier expectations; focused native baseline failures establish the required implementation changes.
Assisted-by: OpenAI Codex:model identifier unavailable
* Keep final-reference regression paths and remove expired sysconfig argument
Preserve reverse multiplication syntax and native exact overflow diagnostics. Accept the two source-proven CPython 3.15 specialization messages only in affected reverse str/bytes/tuple cases. Use an actually out-of-range Windows datetime errno fixture. Remove the sysconfig check_home argument at its existing canonical 3.15 removal test boundary.
Assisted-by: OpenAI Codex:model identifier unavailable
* Keep README wording unchanged in Python 3.15 transition
Assisted-by: OpenAI Codex:model identifier unavailable
* Match Python 3.15 repetition specialization and keep universal tests
Use exact sequence-type guards and preserve generic fallback diagnostics. Validate both cold and warmed expressions without implementation-specific assertions. Reject stale CPython source checkouts and cross-version library caches.
Assisted-by: OpenAI Codex:model identifier unavailable
* Limit in-place specialization additions to exact sequence repetition
Assisted-by: OpenAI Codex:model identifier unavailable
* Keep subclass regression scoped to repetition dispatch
Assisted-by: OpenAI Codex:model identifier unavailable
* Provision final CPython 3.15 with pinned uv builds
Assisted-by: OpenAI Codex:model identifier unavailable
* Enforce Python 3.15 AST constructor requirements
Reject retired missing-field and arbitrary-keyword forms while preserving defaults and explicit placeholders. Sync only matching final CPython constructor test hunks.
Assisted-by: OpenAI Codex:model identifier unavailable
* Keep seeded Python ahead of its Windows DLL directory
Assisted-by: OpenAI Codex:model identifier unavailable
* Keep opcode metadata tied to the implemented bytecode format
The interpreter target and reference tests use Python 3.15.0, but the current Rust opcode enum retains the 3.14 bytecode format. Generate metadata from its matching source rather than importing unsupported instruction families.
Assisted-by: OpenAI Codex:model identifier unavailable
* Align CSV, logarithm and decimal formatting with Python 3.15
Propagate dialect lookup errors except AttributeError, retry integer logarithms after float overflow, and update the decimal conversion diagnostic. Exercise the final reference contracts without implementation-specific branches.
Assisted-by: OpenAI Codex:model identifier unavailable
* Bind the logarithm index result before borrowing its integer
Assisted-by: OpenAI Codex:model identifier unavailable
* Align required canonical test expectations with Python 3.15
Take only demonstrated contract changes from CPython v3.15.0, d220409a13b77de7a6c30abe16ea90db01528edc: removed module __cached__, Struct format exception classes, and decimal-format diagnostic. Preserve unrelated tests and expectations.
Assisted-by: OpenAI Codex:model identifier unavailable
* Track pending frozendict pickle support during the 3.15 transition
Keep the two existing frozendict pickle tests running as expected failures until #8951 supplies the builtin. Unexpected success will signal removal of these temporary markers.
Assisted-by: OpenAI Codex:model identifier unavailable
* Support final Python 3.15 Windows negative timestamps
Use FILETIME for pre-epoch conversions and preserve precise Windows timestamp errors.
Assisted-by: OpenAI Codex:model identifier unavailable
* Derive historical Windows timezone offsets from wall time
FILETIME reports historical DST as unknown, so calculate the actual offset rather than selecting standard-time bias.
Assisted-by: OpenAI Codex:model identifier unavailable
* Identify decimal formatting arguments in Python 3.15 errors
Track consumed positional arguments, including star width and precision, and preserve mapping key representations in decimal conversion diagnostics.
Assisted-by: OpenAI Codex:model identifier unavailable
* Reuse mapping format keys for lookup and error context
Assisted-by: OpenAI Codex:model identifier unavailable
* Borrow mapping diagnostic keys as Python objects
Assisted-by: OpenAI Codex:model identifier unavailable
* Avoid empty components in the reference Python library path
Assisted-by: OpenAI Codex:model identifier unavailable
* Isolate RustPython bytecode caches during the 3.15 transition
Assisted-by: OpenAI Codex:model identifier unavailable
* Sync final Windows timestamp test expectations
Import only the final CPython platform-limit guards and mktime roundtrip expectation required by the existing Windows CI suite.
Assisted-by: OpenAI Codex:model identifier unavailable
* Restore official Python setup for 3.15 final
Use the existing pinned setup-python action now that its official catalog supplies CPython 3.15.0. Remove the temporary standalone provisioning action and its sparse-checkout entry while retaining interpreter outputs and requested versions.
Assisted-by: OpenAI Codex:model identifier unavailable
* Align merged runtime contracts with Python 3.15 final
Restrict mappingproxy ordering, use final codec registry normalization, and prefer index conversion before float conversion for sleep. Retain universal Python assertions and import the matching final codec/time canonical test hunks plus the non-ASCII codec-name deprecation warning.
Upstream source: CPython d220409a13b77de7a6c30abe16ea90db01528edc. The existing codec normalization implementation and bytecode contract remain unchanged.
Assisted-by: OpenAI Codex:model identifier unavailable
* Limit Windows launcher version check to its interpreter
Exclude only the CPython py.exe version-identity case from RustPython CI. The installed launcher reports its own final version, while RustPython correctly remains alpha. Preserve the other 45 launcher cases and all RustPython version assertions without modifying Lib.
Assisted-by: OpenAI Codex:model identifier unavailable
---------
Co-authored-by: Jeong, YunWon <69878+youknowone@users.noreply.github.com>
* Preserve ParamSpec bounds as in Python 3.14.8
Extract the backported bound-validation removal and align the CPython reference pin to 3.14.8 so both snippet interpreters exercise the same contract.
Assisted-by: OpenAI Codex:model identifier unavailable
* Align TextIOWrapper chunk-size deletion with Python 3.14.8
The 3.14.8 reference pin exposes the Argument Clinic deletion guard moved before initialization and attachment checks by CPython 90a1f02b7da0c356d10a23f1faee7dc063f887ed. Preserve assignment checks and align the exact deletion error, including subclass type names.
Assisted-by: OpenAI Codex:model identifier unavailable
* Validate mmap assignments against current storage
Use the existing mapping guard for bounds and writes after argument conversion, including empty assignments. Match the Python 3.14.8 ordering while preserving export guards and ownership APIs.
Assisted-by: OpenAI Codex:model identifier unavailable
* Align mmap boundary regression with Python 3.14.8
Include the matching upstream GH-158027 test-data correction: use an integer RHS so the unchanged IndexError assertion checks index bounds after conversion. Preserve the runtime assignment and storage guards.
Assisted-by: OpenAI Codex:model identifier unavailable
---------
Co-authored-by: Jeong, YunWon <69878+youknowone@users.noreply.github.com>
* Track live entries in reverse dictionary iterators
Extract the Python 3.14-compatible remaining-count and same-size storage handling from #8954. Preserve the older deferred exhaustion and extra-yield contract, using explicit wrapping arithmetic rather than the Python 3.15 extra-yield error and cursor clamp. Cover deleted-slot hints and mutation after the last yield in the existing Python snippet.
Assisted-by: OpenAI Codex:model identifier unavailable
* Enable the repaired reverse-dict restoration regression
The patched native interpreter unexpectedly passes the existing reverse-dict clear/restore test. Remove only its obsolete expected-failure decorator, preserving the canonical assertions and all other markers.
Assisted-by: OpenAI Codex:model identifier unavailable
* Preserve reverse iterator invalidation on atomic relocation
Assisted-by: OpenAI Codex:model identifier unavailable
* Use current locale for byte regular-expression matching
Extract the Python 3.14-compatible LOCALE matching paths from #8954, keeping host callbacks outside the no_std engine and preserving the C-locale fallback. Existing canonical regex tests cover locale changes and compiled patterns. Keep expected-failure markers until patched native execution proves they are obsolete; omit duplicate snippet tests and Python 3.15 prefixmatch additions.
Assisted-by: OpenAI Codex:model identifier unavailable
* Enable the repaired locale caching regression
The exact patched native interpreter passes the existing locale flag and compiled-pattern tests and unexpectedly passes locale caching. Remove only the obsolete expected-failure decorator; preserve all canonical assertions and platform skips.
Assisted-by: OpenAI Codex:model identifier unavailable