Commit Graph
1534 Commits
Author SHA1 Message Date
youknowdot 80d3e52f32 Merge main for the shared Python 3.15 stack base
Preserve main 8d27253 and existing migration work without rewriting history. The resulting source tree exactly matches previously tested PR merge de5bb1b979. No Lib files change in this merge.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-11 11:57:43 +09:00
youknowdot 8d27253fa2 Canonicalize nested template format specs in annotations (#9076)
Use the existing f-string body unparser for template interpolation format specs, while preserving the outer interpolation source text. Add compile-only Python annotation-constant coverage.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-11 09:17:01 +09:00
youknowdot d7b4be2978 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
2026-10-11 07:36:19 +09:00
youknowdot 73ea4179d1 Merge current main into Python 3.15 migration
Preserve newly merged Python 3.14 compatibility work before applying the three required final-3.15 contract adjustments exposed by merge CI.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-11 07:27:28 +09:00
youknowdot 1cbae85e20 Keep coroutine generator expressions on the ordinary call path (#9075)
Match Python 3.14 by excluding coroutine-marked generator expressions from builtin call optimization. Reuse the existing cursor-preserving comprehension lookup so nested outer iterable scopes do not select the wrong symbol table; propagate lookup errors.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 21:25:50 +00:00
youknowdot eb6cefd765 Mark LRU cache wrappers as method descriptors (#9072)
Match the Python 3.14 wrapper type flag and enable the existing guarded method-call fast path. Keep the partial vectorcall changes separate.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 21:17:08 +00:00
youknowdot 44858012f4 Preserve missing caller modules in eager type aliases (#9073)
Only lazy aliases may obtain their module from the evaluation function. Eager aliases without a caller __name__ must not inspect their stored value.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 21:05:21 +00:00
youknowdot 1ff5bbd920 Accept the format keyword in Struct initialization (#9064)
Keep the existing conversion and initialization path while binding format as positional-or-keyword, matching Python 3.14.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:31:54 +00:00
youknowdot 92204385cd Count the complete Windows locale encoding suffix (#9065)
Include modifiers in the 15-byte bound before calling the CRT, matching Python 3.14.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:26:08 +00:00
youknowdot d23dc631ee Validate lock timeout range before acquire restrictions (#9061)
Preserve CPython signed nanosecond conversion precedence for reentrant and nonblocking acquisition, without changing the platform timeout maximum.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 17:55:52 +00:00
youknowdot 29f819ec40 Implement the stable ABI bytes formatting functions (#9060)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 17:01:08 +00:00
youknowdot be52c97463 Reject oversized pickle lengths with OverflowError (#9040)
Preserve the wrapper-pickle regressions merged into main while refreshing the independent length checks.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-11 00:51:40 +09:00
youknowdot 9d6bf4d224 Support directory descriptors in chmod (#9054)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 13:17:16 +00:00
youknowdot eb162b4b5b Decode strftime locale output through wide characters (#9050)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 13:10:07 +00:00
youknowdot 146bb809bb Validate sleep against signed nanosecond time bounds (#9051)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 12:52:23 +00:00
youknowdot 1889ee627f Track live entries in reverse dictionary iterators (#9046)
* 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
2026-10-10 12:44:03 +00:00
youknowdot b63c3b0134 Reuse exact dictionary hashes when merging call keywords (#9053)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 12:33:20 +00:00
youknowdot d674ea11e3 Drop the legacy abi3-only PyCFunction_Call export (#9059)
Follow up on #9055: RustPython targets abi3t, which does not require this legacy binary-compatibility entry point.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 20:57:07 +09:00
youknowdot bc495a8b30 Call descriptor __get__ attributes without pre-binding (#9043)
Extract the Python 3.14-compatible descriptor slot dispatch from #8954. Call the raw type attribute with descriptor, instance and owner, preserving ownership and recursion handling. Extend the existing Python snippet for staticmethod, classmethod, callable-object and ordinary __get__ replacements.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 11:56:48 +00:00
youknowdot 02917b6d9c Preserve reflected addition for sequence subclasses (#9049)
* Preserve reflected addition for native sequence subclasses

Extract the Python 3.14-compatible sequence-add slot distinction from #8954 without its unconditional numeric-slot clearing. Preserve stateful duplicate-slot behavior, exact descriptor identity, inherited reflected priority and a stable wrapper function address. Extend the existing addition snippet only for the uncovered inherited-native and slot-update cases.

Assisted-by: OpenAI Codex:model identifier unavailable

* Use stored MRO for sequence descriptor ownership

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 11:49:08 +00:00
youknowdot c0f0680297 Reject invalid character lengths before index conversion (#9052)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 11:41:54 +00:00
youknowdot 082a48aec3 Preserve signed filesystem timestamps in os.utime (#9047)
Extract the Python 3.14-compatible signed timestamp conversion from #8954, preserving floor rounding, float-or-index argument rules and signed divmod remainders. Reuse the existing Windows file-time helper rather than the mega patch range restriction, and keep the 3.14 argument diagnostics. Add three concise parser regressions to the existing os snippet without native filesystem range assumptions.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 11:21:50 +00:00
youknowdot 64061cd38a Validate RLock acquisition arguments before reentrant success (#9035)
Extract the Python 3.14-compatible timeout validation order from #8954. Share validation with Lock and run it before increasing the RLock recursion count. Keep canonical general-lock coverage and add only owned-lock validation regressions to the existing thread snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 20:12:12 +09:00
youknowdot bc5b9abd75 Export the stable ABI PyCFunction_Call shim (#9055)
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 20:09:45 +09:00
youknowdot fd062caaf4 Use current locale for byte regular-expression matching (#9042)
* 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
2026-10-10 10:54:20 +00:00
youknowdot c516ca95df Preserve requested encoding names in codec lookup errors (#9036)
Extract the Python 3.14-compatible lookup diagnostic fix from #8954 while retaining the existing registry normalization. Cover original error spelling and normalized search-hook names in the existing codec snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:47:59 +09:00
youknowdot 386cd86aef Preserve FunctionType qualified names when overriding names (#9032)
Extract the independent Python 3.14-compatible constructor fix from #8954. An explicit name replaces __name__ while __qualname__ remains the code qualified name. Add a focused regression to the existing types snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:41:23 +09:00
youknowdot 1c7c801a3b Accept dict subclasses returned by module annotation functions (#9033)
Extract the Python 3.14-compatible annotation result check from #8954 without its Python 3.15 diagnostics. Preserve the returned dict subclass and cached identity, and cover the behavior in the existing module snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:36:57 +09:00
youknowdot 7079e70b79 Honor warning instance categories before validating category arguments (#9034)
Extract the Python 3.14-compatible ordering fix from #8954. An existing Warning instance determines its own category, regardless of the category argument. Keep canonical invalid-category coverage and add only the missing instance case to the existing warnings snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:36:20 +09:00
1ndahous3 dcdd5d45c3 Avoid copying strings when replace finds no match (#9029)
Assisted-by: Codex:gpt-6
2026-10-10 19:35:48 +09:00
youknowdot 7c9a0e32b3 Traverse references held by operator callables (#9044)
Extract attrgetter, itemgetter and methodcaller GC traversal from #8954. Add four bounded reference-cycle cases to the existing operator snippet, including a non-dotted str subclass retained by attrgetter.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:34:41 +09:00
youknowdot 9c8b745bfe Reject conflicting member layouts in multiple inheritance (#9041)
Extract the Python 3.14-compatible solid-base check from #8954. Prefix member cells contribute to instance layout even though they do not change basicsize. Include member_count in shape comparison while preserving all native layout safeguards, and cover conflicting and compatible bases in the existing type snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:34:12 +09:00
youknowdot 5dba000d8b Preserve raw mappingproxy rich-comparison results (#9039)
Extract the Python 3.14 comparison contract from #8954 without its 3.15 ordering restrictions or defensive copies. Return the wrapped mapping comparison result without truth conversion. Cover all six direct and reflected operations in the existing mappingproxy snippet.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:33:32 +09:00
youknowdot e3374c8a24 Support pickling slot wrapper descriptors (#9037)
Extract wrapper descriptor reduction from #8954 for Python 3.14. Reduce to getattr on the defining class and cover direct reduction plus one roundtrip in the existing pickle snippet. Preserve canonical expected failures for unrelated staticmethod descriptor behavior.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:32:52 +09:00
youknowdot b725188965 Represent OrderedDict views with their contents (#9038)
Extract the Python 3.14-compatible view representation from #8954. Snapshot view elements before invoking their repr methods, preserve recursion handling, and cover each view in the existing collections snippet. Leave migration-specific mapping changes out.

Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 19:32:22 +09:00
youknowdot 1af8926c71 Isolate RustPython bytecode caches during the 3.15 transition
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 10:12:59 +09:00
youknowdot 4e854bbbbc Borrow mapping diagnostic keys as Python objects
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 09:59:39 +09:00
youknowdot b4468ee483 Reuse mapping format keys for lookup and error context
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 09:47:42 +09:00
youknowdot 1003f62a3d 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
2026-10-10 09:46:57 +09:00
youknowdot d51741677e 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
2026-10-10 09:46:31 +09:00
youknowdot 54dfc8d584 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
2026-10-10 09:46:31 +09:00
1ndahous3 11a8de1a87 Release array and list locks around fromlist conversions (#9030)
Assisted-by: Codex:gpt-6
2026-10-10 09:24:37 +09:00
youknowdot 459395bc21 Bind the logarithm index result before borrowing its integer
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 09:09:56 +09:00
Joshua Megnauth 5c40bb25af host_env: Use close_range syscall (FreeBSD/Linux) (#9016)
FreeBSD and Linux implement a syscall for close_range. It's faster than
looping through the file descriptors to close which would cause a
context switch per descriptor. CPython also uses the syscall where
available.

See:
* https://man.freebsd.org/cgi/man.cgi?close_range(2)
* https://man7.org/linux/man-pages/man2/close_range.2.html
* https://github.com/python/cpython/blob/5a22a62b96a68c2dd31784c5e3427ad7b365388a/Python/fileutils.c#L3193-L3231
2026-10-10 09:08:44 +09:00
youknowdot 8573d916fc 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
2026-10-10 09:01:35 +09:00
youknowdot 33198c7578 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
2026-10-10 08:45:02 +09:00
youknowdot 2002f530dc Limit in-place specialization additions to exact sequence repetition
Assisted-by: OpenAI Codex:model identifier unavailable
2026-10-10 01:00:58 +09:00
youknowdot 72a6330b3c 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
2026-10-10 00:59:33 +09:00
youknowdot 519370bece 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
2026-10-10 00:53:45 +09:00
youknowdot 6c2529800a 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
2026-10-10 00:53:45 +09:00