Skip to content

Sync canonical Python 3.15 gated test sources and Lib metadata - #9369

Merged
youknowone merged 1 commit into
RustPython:mainfrom
youknowdot:split/python315-canonical-gated-tests
Oct 26, 2026
Merged

youknowone merged 1 commit into
RustPython:mainfrom
youknowdot:split/python315-canonical-gated-tests

Conversation

@youknowdot

Copy link
Copy Markdown
Contributor

Summary

Split the canonical interpreter-test source distribution and small Lib source/metadata cleanups out of #8954. This is source synchronization, not interpreter lifecycle support or runtime validation.

  • Sync test_interpreters and _crossinterp_definitions.py, plus the comment-only test.support.channels update.

  • Bring three production comment-only changes (asyncio.staggered, urllib.error, wsgiref.handlers) and the site-packages/README.txt packaging file to canonical source.

  • Remove the unused pickletools doctest checker, preserving the existing expectedFailure forwarding override (decorator, method, and return). Existing doctest selection is unchanged.

  • Restore canonical executable metadata for test_uuid.py; its bytes are unchanged.

  • Sync canonical opcache, remote-pdb, Android and type-cache test sources under their existing gates; remove the already unconditionally skipped obsolete IMDb test and narrow the existing ctypes GNU IFUNC predicate to exclude parisc.

  • Relocate the picklebuffer marker reason through the official updater only, preserving its existing expectedFailure, identical reason, and complete AST.

Provenance and activation boundary

Canonical source: CPython d220409a13b77de7a6c30abe16ea90db01528edc, through narrowly targeted scripts/update_lib migration/copy operations. All 23 paths have canonical bytes and modes except the intentionally retained, pre-existing pickletools forwarding override and picklebuffer expectedFailure/reason adaptation. UUID is a metadata-only correction.

The upstream test_interpreters package already raises SkipTest("GIL disabled") before its load_tests hook or submodule imports. Current bundled Linux/macOS and Windows sysconfig providers report Py_GIL_DISABLED=1; the existing regrtest selection treats this as a package, so that canonical gate precedes the newly distributed tests. No skip, runner, workflow, or native implementation is added or changed. Custom sysconfig overrides or future configuration changes may alter that gate; this is a static source/CI audit, not an executed skip claim.

Deliberately excluded: standalone test__interpreters.py and test__interpchannels.py (would activate low-level lifecycle tests), test_crossinterp.py (requires unavailable fixture functionality), and the production _queues.py eager-pickle-import change. No fixture activation or recreation of #9143.

The additional test-source gates are unchanged: opcache skips non-CPython before fixture use; remote-pdb skips when sys.is_remote_debug_enabled() is false (constant false in the current VM); Android skips non-Android before its new API-level lookup; type-cache skips when _testcapi is absent, before fixture dereferences. _testinternalcapi exists and is distinct from the absent _testcapi; supplying an incomplete external _testcapi changes that boundary. The later cpython_only decorators do not protect those earlier dereferences.

These files are not import-inert: ordinary imports precede the gates. In particular, remote-pdb imports pdb/threading/optional pty, pdb tracing may open a file when PYREPL_TRACE is configured (not set by current CI), and existing Windows support imports may load kernel32. No pre-gate remote-debug operation or process/thread/pty startup was found. The static gate audit applies to current supported CI configurations, not arbitrary custom configurations, Android runtime correctness, or new feature support.

Validation

  • Normal affected-file hooks passed, including merge-conflict checks, Ruff format/check and redundant-test-patch checks; normal commit hooks passed again.
  • Host CPython syntax compilation of the 22 Python sources, without executing them, importing project modules, or emitting bytecode files.
  • cargo check --locked --offline --bin rustpython — passed.
  • cargo check --locked --offline --features freeze-stdlib --bin rustpython — passed.

Both final23 compile-only checks used the same independently reviewed full-source/tool/config binding and bounded single-job guard. Source, modes, tools and protected artifacts remained unchanged; no child processes remained afterward. No RustPython runtime, lifecycle, GC, threading, stress, or fixture tests were run. This draft does not claim those capabilities work.

Assisted by OpenAI Codex (model version unavailable).

Assisted-by: OpenAI Codex: model version unavailable
@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters: 23
  • Lib/asyncio/staggered.py is excluded by !Lib/**
  • Lib/site-packages/README.txt is excluded by !Lib/**
  • Lib/test/_crossinterp_definitions.py is excluded by !Lib/**
  • Lib/test/support/channels.py is excluded by !Lib/**
  • Lib/test/test_android.py is excluded by !Lib/**
  • Lib/test/test_ctypes/test_dlerror.py is excluded by !Lib/**
  • Lib/test/test_interpreters/__init__.py is excluded by !Lib/**
  • Lib/test/test_interpreters/__main__.py is excluded by !Lib/**
  • Lib/test/test_interpreters/test_api.py is excluded by !Lib/**
  • Lib/test/test_interpreters/test_channels.py is excluded by !Lib/**
  • Lib/test/test_interpreters/test_lifecycle.py is excluded by !Lib/**
  • Lib/test/test_interpreters/test_queues.py is excluded by !Lib/**
  • Lib/test/test_interpreters/test_stress.py is excluded by !Lib/**
  • Lib/test/test_interpreters/utils.py is excluded by !Lib/**
  • Lib/test/test_opcache.py is excluded by !Lib/**
  • Lib/test/test_picklebuffer.py is excluded by !Lib/**
  • Lib/test/test_pickletools.py is excluded by !Lib/**
  • Lib/test/test_remote_pdb.py is excluded by !Lib/**
  • Lib/test/test_type_cache.py is excluded by !Lib/**
  • Lib/test/test_urllib2net.py is excluded by !Lib/**
  • Lib/test/test_uuid.py is excluded by !Lib/**
  • Lib/urllib/error.py is excluded by !Lib/**
  • Lib/wsgiref/handlers.py is excluded by !Lib/**

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

📦 Library Dependencies

The following Lib/ modules were modified. Here are their dependencies:

[x] lib: cpython/Lib/pickle.py
[ ] lib: cpython/Lib/_compat_pickle.py
[x] test: cpython/Lib/test/picklecommon.py
[ ] test: cpython/Lib/test/test_pickle.py (TODO: 5)
[x] test: cpython/Lib/test/test_picklebuffer.py (TODO: 1)
[ ] test: cpython/Lib/test/test_pickletools.py (TODO: 1)
[x] test: cpython/Lib/test/test_xpickle.py
[x] test: cpython/Lib/test/xpickle_worker.py

dependencies:

  • pickle (native: _pickle, itertools, sys)
    • _compat_pickle
    • _compat_pickle
    • io (native: _io, _thread, errno, msvcrt, sys)
    • argparse, codecs, copyreg, functools, pprint, struct, types

dependent tests: (100 tests)

  • pickle: test_annotationlib test_argparse test_array test_ast test_asyncio test_bool test_builtin test_bytes test_bz2 test_codecs test_collections test_concurrent_futures test_configparser test_coroutines test_csv test_ctypes test_decimal test_defaultdict test_deque test_descr test_dict test_dictviews test_email test_enum test_enumerate test_exceptions test_external_inspection test_fractions test_functools test_generators test_genericalias test_genericpath test_http_cookies test_importlib test_inspect test_interpreters test_io test_ipaddress test_iter test_itertools test_json test_list test_logging test_lzma test_memoryview test_minidom test_opcache test_operator test_ordered_dict test_os test_pathlib test_pickle test_picklebuffer test_pickletools test_platform test_plistlib test_positional_only_arg test_random test_range test_re test_set test_shelve test_slice test_socket test_statistics test_str test_string test_structseq test_super test_time test_trace test_tuple test_turtle test_type_aliases test_type_params test_types test_typing test_unittest test_urlparse test_uuid test_xml_dom_minicompat test_xml_etree test_xpickle test_zipfile test_zlib test_zoneinfo
    • logging: test_asyncio test_concurrent_futures test_hashlib test_pkgutil test_support test_urllib2net
      • asyncio.futures: test_asyncio
      • http.cookiejar: test_http_cookiejar test_urllib2
      • multiprocessing.util: test_asyncio test_compileall test_concurrent_futures
      • venv: test_venv
    • tracemalloc: test_tracemalloc

[x] test: cpython/Lib/test/test_android.py

dependencies:

dependent tests: (no tests depend on android)

[ ] lib: cpython/Lib/profiling
[ ] test: cpython/Lib/test/test_profiling

dependencies:

  • profiling (native: main, _child_monitor, _css_utils, _format_utils, _lsprof, _remote_debugging, binary_collector, binary_reader, cli, collector, constants, display, dump, errors, gecko_collector, heatmap_collector, importlib.machinery, importlib.resources, importlib.util, itertools, jsonl_collector, live_collector, marshal, math, module_utils, opcode_utils, profiling.tracing, profiling.tracing._utils, pstats_collector, sample, stack_collector, string_table, sys, time, trend_tracker, widgets)
    • curses (native: _curses, _curses_panel, curses.ascii, has_key, sys)
    • opcode (native: _opcode, builtins)
    • platform (native: _wmi, itertools, sys, vms_lib, winreg)
    • site (native: _io, _pyrepl.main, _pyrepl.pager, _pyrepl.readline, _pyrepl.unix_console, _pyrepl.windows_console, atexit, builtins, errno, readline, sitecustomize, sys, usercustomize)
    • sysconfig (native: _sysconfig, _winapi, importlib.machinery, importlib.util, os.path, sys)
    • io
    • _colorize, abc, argparse, base64, collections, contextlib, dataclasses, functools, html, json, linecache, locale, optparse, os, pathlib, pstats, re, runpy, selectors, socket, statistics, subprocess, tempfile, threading, traceback, types, typing, uuid, webbrowser

dependent tests: (3 tests)

  • profiling: test_profiling
    • cProfile: test_cprofile test_pstats

[x] lib: cpython/Lib/urllib
[x] test: cpython/Lib/test/test_urllib.py
[x] test: cpython/Lib/test/test_urllib2.py
[x] test: cpython/Lib/test/test_urllib2_localnet.py
[x] test: cpython/Lib/test/test_urllib2net.py
[x] test: cpython/Lib/test/test_urllibnet.py
[x] test: cpython/Lib/test/test_urlparse.py
[x] test: cpython/Lib/test/test_urllib_response.py
[x] test: cpython/Lib/test/test_robotparser.py

dependencies:

  • urllib

dependent tests: (107 tests)

  • urllib: test_genericalias test_http_cookiejar test_http_cookies test_httpservers test_logging test_pathlib test_pydoc test_robotparser test_sax test_site test_sqlite3 test_ssl test_ucn test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib_response test_urllibnet test_urlparse
    • email.utils: test_email test_smtplib
      • http.server: test_xmlrpc
      • logging.handlers: test_concurrent_futures test_pkgutil
      • smtplib: test_smtpnet
    • http: test_docxmlrpc test_hashlib test_httplib test_unicodedata test_wsgiref test_xml_dom_xmlbuilder
      • pydoc: test_enum
    • mimetypes: test_mimetypes
    • pathlib: test_ast test_dbm_sqlite3 test_ensurepip test_importlib test_json test_launcher test_netrc test_os test_pathlib test_peg_generator test_profiling test_pyrepl test_runpy test_tarfile test_tempfile test_tomllib test_tools test_traceback test_unparse test_venv test_winapi test_zipapp test_zipfile test_zoneinfo test_zstd
      • compileall: test_compileall
      • importlib: test_asdl_parser test_bdb test_cmd_line_script test_codecs test_ctypes test_doctest test_external_inspection test_frozen test_importlib test_inspect test_interpreters test_linecache test_modulefinder test_multiprocessing_main_handling test_py_compile test_pyclbr test_pyrepl test_reprlib test_sundry test_support test_unittest test_zipfile test_zipimport test_zoneinfo
      • profiling.sampling.heatmap_collector: test_profiling
      • traceback: test_asyncio test_builtin test_code_module test_concurrent_futures test_contextlib test_contextlib_async test_coroutines test_dictcomps test_exceptions test_iter test_listcomps test_pyexpat test_setcomps test_socket test_subprocess test_sys test_threadedtempfile test_threading test_unittest test_with
      • zipapp: test_pdb
    • pydoc:
      • pdb: test_remote_pdb

[x] lib: cpython/Lib/ctypes
[ ] test: cpython/Lib/test/test_ctypes (TODO: 8)
[ ] test: cpython/Lib/test/test_stable_abi_ctypes.py

dependencies:

  • ctypes

dependent tests: (37 tests)

  • ctypes: test_android test_buffer test_bytes test_code test_codecs test_ctypes test_genericalias test_ntpath test_os test_ssl test_venv
    • platform: test__locale test__osx_support test_asyncio test_baseexception test_builtin test_calendar test_cmath test_fcntl test_math test_mimetypes test_os test_platform test_regrtest test_shutil test_socket test_strptime test_sysconfig test_time test_tkinter test_winreg test_wsgiref
      • profiling.sampling.gecko_collector: test_profiling
      • profiling.sampling.heatmap_collector: test_profiling
      • pydoc: test_enum test_pydoc
    • webbrowser: test_webbrowser

[x] test: cpython/Lib/test/test_type_cache.py

dependencies:

dependent tests: (no tests depend on type_cache)

[x] lib: cpython/Lib/wsgiref
[x] test: cpython/Lib/test/test_wsgiref.py

dependencies:

  • wsgiref

dependent tests: (1 tests)

  • wsgiref: test_wsgiref

[x] test: cpython/Lib/test/test_opcache.py

dependencies:

dependent tests: (no tests depend on opcache)

[x] lib: cpython/Lib/asyncio
[ ] test: cpython/Lib/test/test_asyncio (TODO: 3)

dependencies:

  • asyncio

dependent tests: (9 tests)

  • asyncio: test_asyncio test_concurrent_futures test_external_inspection test_inspect test_logging test_os test_pdb test_unittest
    • pdb: test_remote_pdb

[ ] lib: cpython/Lib/concurrent
[x] test: cpython/Lib/test/test_concurrent_futures (TODO: 1)
[x] test: cpython/Lib/test/test_interpreters
[ ] test: cpython/Lib/test/test__interpreters.py
[ ] test: cpython/Lib/test/test__interpchannels.py
[ ] test: cpython/Lib/test/test_crossinterp.py

dependencies:

  • concurrent (native: _crossinterp, _interpqueues, _interpreters, _queues, concurrent.futures, concurrent.futures._base, interpreter, itertools, multiprocessing.connection, multiprocessing.queues, multiprocessing.synchronize, process, sys, thread, time)
    • collections, functools, logging, multiprocessing, os, queue, threading, traceback, types, weakref

dependent tests: (19 tests)

  • concurrent: test_asyncio test_compileall test_concurrent_futures test_context test_external_inspection test_genericalias test_inspect test_interpreters test_struct test_sys test_threading test_types test_wmi
    • asyncio: test_asyncio test_logging test_os test_pdb test_unittest
      • pdb: test_remote_pdb

[x] test: cpython/Lib/test/test_remote_pdb.py

dependencies:

dependent tests: (no tests depend on remote_pdb)

[x] lib: cpython/Lib/uuid.py
[x] test: cpython/Lib/test/test_uuid.py

dependencies:

  • uuid

dependent tests: (3 tests)

  • uuid: test_os
    • profiling.sampling.jsonl_collector: test_profiling
    • wave: test_wave

Legend:

  • [+] path exists in CPython
  • [x] up-to-date, [ ] outdated

@youknowone
youknowone marked this pull request as ready for review October 26, 2026 01:12
@youknowone
youknowone merged commit 557995b into RustPython:main Oct 26, 2026
20 of 21 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-26T01:13:26.496873Z
We couldn’t complete this review. Comment @codex review to try again.
6d71469 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants