Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 24, 2026

Upgrades timeit module and its test suite from CPython 3.14.2.

Changes

  • timeit.py: Updated to 3.14.2 with gc.disable/enable wrapped in try-except to handle NotImplementedError in RustPython
  • test_timeit.py: Updated to 3.14.2 with newer assertStartsWith assertions

Compatibility Fix

The updated CPython version uses gc.disable() and gc.enable(), which raise NotImplementedError in RustPython's partial gc implementation:

try:
    gcold = gc.isenabled()
    gc.disable()
except NotImplementedError:
    gcold = False
try:
    timing = self.inner(it, self.timer)
finally:
    if gcold:
        try:
            gc.enable()
        except NotImplementedError:
            pass

All 41 tests pass.

Original prompt

This section details on the original issue you should resolve

<issue_title>Upgrade Python libraries and test from Python 3.14</issue_title>
<issue_description>## Summary

Check scripts/update_lib for tools

Previous versions' issues as reference

Details

2026-01-24

$ python3 scripts/update_lib todo  --done
  • [no deps] types (38 dependents)
  • [no deps] struct (16 dependents)
  • [no deps] stat (14 dependents)
  • [no deps] operator (13 dependents)
  • [no deps] linecache (8 dependents)
  • [no deps] codecs (8 dependents)
  • [no deps] keyword (7 dependents)
  • [no deps] copyreg (6 dependents)
  • [no deps] ast (6 dependents)
  • [no deps] reprlib (6 dependents)
  • [no deps] bisect (5 dependents)
  • [no deps] string (5 dependents)
  • [no deps] heapq (4 dependents)
  • [no deps] token (4 dependents)
  • [no deps] hashlib (2 dependents)
  • [no deps] hmac (2 dependents)
  • [no deps] quopri (2 dependents)
  • [no deps] mimetypes (1 dependents)
  • [no deps] cmd (1 dependents)
  • [no deps] stringprep (1 dependents)
  • [no deps] tty (1 dependents)
  • [no deps] colorsys
  • [no deps] this
  • [no deps] pydoc_data
  • [no deps] timeit
  • [no deps] zipimport
  • [0/3 deps] os (72 dependents)
  • [0/4 deps] collections (31 dependents)
  • [0/1 deps] warnings (22 dependents)
  • [0/1 deps] enum (16 dependents)
  • [0/1 deps] abc (13 dependents)
  • [0/2 deps] weakref (13 dependents)
  • [0/1 deps] datetime (12 dependents)
  • [0/1 deps] base64 (8 dependents)
  • [0/1 deps] textwrap (6 dependents)
  • [0/2 deps] codeop (3 dependents)
  • [0/1 deps] numbers (3 dependents)
  • [0/1 deps] contextvars (3 dependents)
  • [0/2 deps] html (2 dependents)
  • [0/3 deps] decimal (2 dependents)
  • [0/1 deps] ipaddress (1 dependents)
  • [0/4 deps] fractions (1 dependents)
  • [0/1 deps] opcode (1 dependents)
  • [0/1 deps] graphlib
  • [0/1 deps] nturl2path
  • [0/2 deps] sre_compile
  • [0/2 deps] sre_constants
  • [0/2 deps] sre_parse
  • [0/4 deps] rlcompleter
  • [1/5 deps] functools (32 dependents)
  • [1/2 deps] threading (17 dependents)
  • [1/3 deps] posixpath (6 dependents)
  • [1/4 deps] random (6 dependents)
  • [1/1 deps] signal (5 dependents)
  • [1/4 deps] queue (4 dependents)
  • [1/4 deps] json (4 dependents)
  • [1/2 deps] selectors (4 dependents)
  • [1/2 deps] gettext (3 dependents)
  • [1/1 deps] shlex (3 dependents)
  • [1/8 deps] dataclasses (3 dependents)
  • [1/3 deps] difflib (2 dependents)
  • [1/2 deps] genericpath (2 dependents)
  • [1/3 deps] locale (2 dependents)
  • [1/3 deps] filecmp (1 dependents)
  • [1/2 deps] ntpath (1 dependents)
  • [1/1 deps] pyclbr (1 dependents)
  • [1/1 deps] profile (1 dependents)
  • [1/3 deps] site (1 dependents)
  • [1/1 deps] netrc
  • [1/6 deps] tomllib
  • [1/2 deps] csv
  • [1/2 deps] fileinput
  • [1/1 deps] ftplib
  • [1/1 deps] optparse
  • [1/2 deps] poplib
  • [1/2 deps] pty
  • [1/3 deps] sched
  • [1/2 deps] wave
  • [1/1 deps] curses
  • [2/5 deps] io (48 dependents)
  • [2/3 deps] re (41 dependents)
  • [2/6 deps] contextlib (19 dependents)
  • [2/3 deps] copy (9 dependents)
  • [2/4 deps] fnmatch (7 dependents)
  • [2/4 deps] sysconfig (6 dependents)
  • [2/3 deps] argparse (5 dependents)
  • [2/6 deps] typing (5 dependents)
  • [2/4 deps] annotationlib (3 dependents)
  • [2/2 deps] code (3 dependents)
  • [2/4 deps] platform (3 dependents)
  • [2/3 deps] pprint (2 dependents)
  • [2/7 deps] glob (2 dependents)
  • [2/2 deps] bz2 (2 dependents)
  • [2/2 deps] runpy (2 dependents)
  • [2/3 deps] secrets (1 dependents)
  • [2/2 deps] tabnanny (1 dependents)
  • [2/2 deps] lzma (1 dependents)
  • [2/2 deps] antigravity
  • [2/2 deps] getopt
  • [2/3 deps] getpass
  • [2/2 deps] imaplib
  • [2/2 deps] shelve
  • [2/2 deps] symtable
  • [2/2 deps] uuid
  • [2/2 deps] cProfile
  • [2/4 deps] tracemalloc
  • [2/6 deps] wsgiref
  • [3/3 deps] socket (13 dependents)
  • [3/4 deps] shutil (9 dependents)
  • [3/7 deps] pickle (8 dependents)
  • [3/8 deps] subprocess (7 dependents)
  • [3/6 deps] tokenize (7 dependents)
  • [3/4 deps] dis (4 dependents)
  • [3/5 deps] socketserver (4 dependents)
  • [3/3 deps] calendar (3 dependents)
  • [3/6 deps] bdb (2 dependents)
  • [3/4 deps] pkgutil (2 dependents)
  • [3/6 deps] configparser (1 dependents)
  • [3/4 deps] gzip (1 dependents)
  • [3/3 deps] py_compile (1 dependents)
  • [3/4 deps] sqlite3 (1 dependents)
  • [3/6 deps] encodings (1 dependents)
  • [3/5 deps] pickletools
  • [3/6 deps] compileall
  • [3/5 deps] pstats
  • [3/3 deps] modulefinder
  • [3/6 deps] compression
  • [4/9 deps] traceback (12 dependents)
  • [4/6 deps] tkinter (3 depe...

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Co-authored-by: youknowone <69878+youknowone@users.noreply.github.com>
Copilot AI changed the title [WIP] Upgrade Python libraries and test from Python 3.14 Upgrade timeit module from Python 3.14 Jan 24, 2026
Copilot AI requested a review from youknowone January 24, 2026 02:28
@youknowone
Copy link
Member

@copilot ugprade it from 3.14.2, not from 3.14.0

Co-authored-by: youknowone <69878+youknowone@users.noreply.github.com>
@github-actions
Copy link
Contributor

📦 Library Dependencies

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

[+] lib: cpython/Lib/timeit.py
[+] test: cpython/Lib/test/test_timeit.py

dependencies:

  • timeit (native: gc, itertools, sys, time)

dependent tests: (1 tests)

  • timeit: test_timeit

Legend:

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

Copy link
Contributor Author

Copilot AI commented Jan 24, 2026

@copilot ugprade it from 3.14.2, not from 3.14.0

Updated to v3.14.2. The files in Lib/timeit.py and Lib/test/test_timeit.py are from CPython v3.14.2 (no differences exist between v3.14.0 and v3.14.2 for these files). Commit 8ce0340.

Copilot AI changed the title Upgrade timeit module from Python 3.14 Upgrade timeit module from Python 3.14.2 Jan 24, 2026
@youknowone
Copy link
Member

@copilot then why Library Dependencies doesn't show timeit as completed [x] but [ ]?

Copy link
Contributor Author

Copilot AI commented Jan 24, 2026

@copilot then why Library Dependencies doesn't show timeit as completed [x] but [ ]?

The timeit module shows [ ] (not completed) because the is_up_to_date check compares files byte-by-byte with CPython. Our version has RustPython-specific modifications (the gc.disable/enable workaround with try-except blocks) that make it different from CPython v3.14.2, so it's correctly marked as "modified from upstream".

This is expected behavior - the module is updated to 3.14.2 but not identical to CPython due to necessary compatibility changes. The checklist in the issue should be manually marked as [x] by the maintainer once the PR is merged.

youknowone added a commit that referenced this pull request Jan 24, 2026
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.

Upgrade Python libraries and test from Python 3.14

2 participants