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
When git can't create symlinks (the default on Windows without
Developer Mode), crates/pylib/Lib is checked out as a plain text file
that holds the target path. That path is relative to the file's own
folder, but py_freeze! opened it relative to the build's working
directory, so building rustpython-pylib failed with
"Error listing dir".
Resolve the target against the folder of that file instead.
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>
Use the canonical code module path introduced in PyO3 0.30 without suppressing deprecation warnings.
Assisted-by: OpenAI Codex:model version unavailable
* 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
* Preserve explicit AST column locations through code generation
Assisted-by: OpenAI Codex:model version unavailable
* Remove obsolete location bindings after span migration
Assisted-by: OpenAI Codex:model version unavailable
* Propagate inconsistent AST span provenance without panicking
Assisted-by: OpenAI Codex:model version unavailable
* Preserve mapped positions when exporting optimized Pass nodes
Assisted-by: OpenAI Codex:model version unavailable
* Consolidate AST location regressions and satisfy strict compiler lints
Assisted-by: OpenAI Codex:model version unavailable
* Consolidate equivalent AST literal location cases
Replace the six-way literal-only optimizer matrix with one optimized-AST round-trip, preserving all assertions. Keep the distinct normalized-range identity, explicit Pass provenance, and synthetic format-spec regressions.
Validation: all four appended location cases passed using the verified final-f6a RustPython binary with unchanged native sources. Ran normal pre-commit hooks; no Cargo build or full cyclic snippet suite.
Assisted-by: OpenAI Codex:model version unavailable
* Reuse Ruff source locations in AST conversion
Replace redundant PySourceLocation, Row, and Column wrappers with the compiler-core re-export of Ruff SourceLocation. Use UTF-8 byte coordinates and retain the empty-source fallback. Share the normalized range conversion while preserving caller validation and signed semantic metadata.
Validation so far: independent source and boundary review, rustfmt, and git diff --check. Runtime validation follows after the shared build target is released.
Assisted-by: OpenAI Codex:model version unavailable
* Preserve the first AST preprocessing location error
Share first-error recording between generated-node allocation and synthetic-pass coordinate overflow. Exercise both real compiler-state failure paths in both orders using one MAX_ID location entry.
Validation: focused compiler-state regression, strict codegen all-target Clippy, unchanged full-source seals, rustfmt, and normal pre-commit hooks. No interpreter runtime or broad suite rerun for this error-only change.
Assisted-by: OpenAI Codex:model version unavailable
Drop the capi [features] table added in #9011 along with the root
ucd_3_2_0 forwarding to rustpython-capi and the default-features = false
on the workspace rustpython-capi dependency. The root ucd_3_2_0 feature
still enables rustpython-stdlib/ucd_3_2_0.
Assisted-by: Claude Code:claude-opus-5-5
* 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
* Own generated native closures and retain their method definitions
Assisted-by: Codex:gpt-6
* Keep native callable GC traversal off the bind path
Revert method_descriptor and classmethod_descriptor to untracked
payloads. Their only object field, _method_def_owner, points to an
untracked HeapMethodDef.
Restore the derived Traverse for builtin_function_or_method without a
clear implementation. default_dealloc calls the clear slot on every
deallocation, so the custom clear allocated a Vec for each bound builtin.
Use the derived Traverse for builtin_method, skipping the static class.
Assisted-by: Claude Code:claude-opus-5-5
---------
Co-authored-by: Jeong YunWon <jeong@youknowone.org>
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
* Fix module docstring global name resolution
Assisted-by: Claude Code:claude-opus-5-5
* Move module docstring test into syntax_doc.py
Assisted-by: Claude Code:claude-opus-5-5
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
* Preserve explicit customizations during canonical library migration
Add bounded runtime, call, and doctest preservation plus explicit remaining-marker metadata. Support mapped legacy test-package migrations without losing ordered guards, and exclude cache directories from both migration paths while retaining canonical assets.
Validation: 53 bounded host-Python tooling tests passed. Tests inspect source and temporary files without executing migrated fixtures. Existing copy-library cache protection is unchanged. No Lib or interpreter changes.
Assisted-by: OpenAI Codex:model version unavailable
* Integrate migration preservation into existing updater modules
Keep migration orchestration and guarded package moves in cmd_migrate, and marker/doctest metadata in patch_spec. Reuse AST anchor validation and existing test modules, removing all eleven newly introduced helper, test, and data files.
Require caller-selected doctest metadata instead of embedding syntax-case policy. Reject guarded legacy doctests before package writes. Preserve the prior 53 test scenarios and add seven focused metadata regressions; all 60 bounded host tooling tests passed. No Lib, workflow, or native changes.
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
Prefer index conversion for timestamps, accept float-convertible values, validate ISO timezone components, and apply final local fold detection consistently.
Implementation, source comparison, and bounded validation were assisted by OpenAI Codex.
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
* Preserve inherited test markers in inline class migrations
Expand canonical inline class suites before appending retained inherited overrides, and validate generated syntax. Run focused migration-tool tests in a path-filtered Python-only CI job.
Assisted-by: OpenAI Codex:model version unavailable
* Run migration tool tests through existing CI conditions
Keep Rust build gates unchanged and run focused Python migration tests on Linux for tool-only changes. Remove the separate workflow.
Assisted-by: OpenAI Codex:model version unavailable
Extract the Python 3.15 final mapping format while preserving current code-object field identities and owned writer references.
Assisted-by: OpenAI Codex:model version unavailable
Co-authored-by: youknowdot <dot@youknowone.org>
* Preserve partial keyword identity through vectorcall
Retain keyword objects in CALL_FUNCTION_EX and snapshot partial state before Python callbacks. Match CPython 3.15 final partial keyword merging without changing Lib or tests.
Assisted-by: OpenAI Codex:model version unavailable
* Register partial vectorcall through pyslot
Use the existing slot macro instead of a class extension hook. Return TypeError for non-string incoming names in the non-vectorcall fallback rather than panicking.
Assisted-by: OpenAI Codex:model version unavailable
Support frozen mappings in str.maketrans and native JSON encoding, preserve integer translation keys, and protect mappingproxy dictionaries from unknown reflected comparisons.
Assisted-by: OpenAI Codex:model version unavailable
Settings::default() leaves hash_seed = None, so every benchmark process
draws a random str hash secret. That changes globals-dict probe lengths
between runs and makes dict/loop/string microbenchmarks swing by 10-17%
with no code change. Use a fixed seed so results only move when the
code does.
Co-authored-by: CodSpeed Bot <no-reply@codspeed.io>
Parse and convert percent fields in order, preserve callback precedence, and align argument-context errors and keyed conversion restrictions. Keep invalid character-length checks ahead of index conversion and cover bounded callback ordering.
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
Require matching cache/type versions to be nonzero in both readers, keeping
Acquire load order and the existing sequence-lock checks. Add a deterministic
native regression for cleared versions, mismatches, and valid negative cache
entries, without executing Python or introducing concurrency stress.
Render Python tracebacks when the existing disassembly snapshot helper fails.
The intermittent Windows AttributeError that prompted this investigation has
not been reproduced locally or proven to originate from the cache defect.
AI assistance: OpenAI Codex investigated, implemented, independently
source-reviewed, and performed focused automated validation of this change.
No human manual testing is claimed.
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>