Skip to content

Conversation

@youknowone
Copy link
Member

@youknowone youknowone commented Jan 24, 2026

- [x] [no deps] types (40 dependents)
  - [ ] test_types (10 TODO)
- [x] [no deps] stat (14 dependents)
  - [ ] test_stat
- [x] [no deps] operator (13 dependents)
  - [ ] test_operator (3 TODO)
- [ ] [no deps] codecs (8 dependents)
  - [ ] test_codecs (98 TODO)
  - [ ] test_codeccallbacks (11 TODO)
  - [ ] test_codecencodings_cn (untracked)
  - [ ] test_codecencodings_hk (untracked)
  - [ ] test_codecencodings_iso2022 (untracked)
  - [ ] test_codecencodings_jp (untracked)
  - [ ] test_codecencodings_kr (untracked)
  - [ ] test_codecencodings_tw (untracked)
  - [ ] test_codecmaps_cn (untracked)
  - [ ] test_codecmaps_hk (untracked)
  - [ ] test_codecmaps_jp (untracked)
  - [ ] test_codecmaps_kr (untracked)
  - [ ] test_codecmaps_tw (untracked)
  - [ ] test_charmapcodec
  - [ ] test_multibytecodec (untracked)
- [x] [no deps] string (5 dependents)
  - [ ] test_string (untracked)
- [ ] [no deps] hashlib (2 dependents)
  - [ ] test_hashlib (10 TODO)
- [ ] [no deps] hmac (2 dependents)
  - [ ] test_hmac (18 TODO)
- [ ] [no deps] _compat_pickle (1 dependents)
- [ ] [no deps] _opcode_metadata (1 dependents)
- [ ] [no deps] timeit
  - [ ] test_timeit
- [x] [no deps] zipimport
  - [x] test_zipimport (2 TODO)
  - [ ] test_zipimport_support (untracked)
- [ ] [0/3 deps] os (76 dependents)
  - [ ] test_os (18 TODO)
- [ ] [0/4 deps] collections (32 dependents)
  - [x] test_collections (3 TODO)
  - [ ] test_deque (3 TODO)
  - [x] test_defaultdict
  - [ ] test_ordered_dict (4 TODO)
- [x] [0/1 deps] warnings (23 dependents)
  - [ ] test_warnings (40 TODO)
- [ ] [0/1 deps] enum (17 dependents)
  - [ ] test_enum (15 TODO)
- [ ] [0/1 deps] datetime (13 dependents)
  - [ ] test_datetime
  - [ ] test_strptime (untracked)
- [x] [0/1 deps] base64 (8 dependents)
  - [ ] test_base64
- [ ] [0/1 deps] textwrap (6 dependents)
  - [ ] test_textwrap
- [ ] [0/1 deps] _weakrefset (4 dependents)
- [ ] [0/2 deps] codeop (3 dependents)
  - [ ] test_codeop (5 TODO)
- [ ] [0/3 deps] decimal (2 dependents)
  - [ ] test_decimal (2 TODO)
- [ ] [0/1 deps] _markupbase (1 dependents)
- [ ] [0/4 deps] fractions (1 dependents)
  - [ ] test_fractions (1 TODO)
- [x] [0/4 deps] rlcompleter (1 dependents)
  - [ ] test_rlcompleter (1 TODO)
- [ ] [0/1 deps] nturl2path
  - [ ] test_nturl2path (untracked)
- [x] [1/3 deps] re (45 dependents)
  - [ ] test_re (19 TODO)
- [x] [1/5 deps] functools (33 dependents)
  - [ ] test_functools (11 TODO)
- [x] [1/1 deps] abc (15 dependents)
  - [ ] test_abc (1 TODO)
- [ ] [1/2 deps] weakref (14 dependents)
  - [ ] test_weakref (28 TODO)
- [ ] [1/3 deps] copy (9 dependents)
  - [ ] test_copy
- [ ] [1/2 deps] ast (7 dependents)
  - [ ] test_ast (104 TODO)
  - [ ] test_unparse (untracked)
- [x] [1/1 deps] signal (6 dependents)
  - [ ] test_signal (3 TODO)
- [ ] [1/3 deps] posixpath (6 dependents)
  - [x] test_posixpath (4 TODO)
- [ ] [1/4 deps] random (6 dependents)
  - [ ] test_random
- [x] [1/6 deps] typing (6 dependents)
  - [ ] test_typing (21 TODO)
  - [ ] test_type_aliases (untracked)
  - [ ] test_type_annotations (untracked)
  - [ ] test_type_params (untracked)
  - [ ] test_genericalias (5 TODO)
- [ ] [1/8 deps] dataclasses (5 dependents)
  - [ ] test_dataclasses (10 TODO)
- [ ] [1/4 deps] queue (4 dependents)
  - [ ] test_queue
- [ ] [1/4 deps] json (4 dependents)
  - [ ] test_json (18 TODO)
- [ ] [1/2 deps] gettext (3 dependents)
  - [ ] test_gettext (7 TODO)
- [ ] [1/1 deps] shlex (3 dependents)
  - [ ] test_shlex (4 TODO)
- [ ] [1/3 deps] locale (3 dependents)
  - [ ] test_locale
- [ ] [1/3 deps] difflib (2 dependents)
  - [ ] test_difflib
- [x] [1/2 deps] genericpath (2 dependents)
  - [ ] test_genericpath (1 TODO)
- [ ] [1/2 deps] html (2 dependents)
  - [x] test_html
  - [ ] test_htmlparser
- [ ] [1/3 deps] site (2 dependents)
  - [ ] test_site (5 TODO)
- [ ] [1/2 deps] ntpath (1 dependents)
  - [ ] test_ntpath
- [ ] [1/1 deps] opcode (1 dependents)
- [x] [1/1 deps] pyclbr (1 dependents)
  - [ ] test_pyclbr (3 TODO)
- [ ] [1/1 deps] profile (1 dependents)
  - [ ] test_profile (untracked)
- [ ] [1/6 deps] tomllib
  - [ ] test_tomllib
- [x] [1/2 deps] _osx_support
  - [ ] test__osx_support
- [ ] [1/2 deps] csv
  - [ ] test_csv (27 TODO)
- [x] [1/2 deps] fileinput
  - [ ] test_fileinput (1 TODO)
- [ ] [1/1 deps] ftplib
  - [x] test_ftplib (4 TODO)
- [ ] [1/1 deps] optparse
  - [ ] test_optparse
- [ ] [1/2 deps] poplib
  - [ ] test_poplib (untracked)
- [ ] [1/2 deps] pty
  - [ ] test_pty (4 TODO)
- [ ] [1/2 deps] wave
  - [ ] test_wave
- [ ] [1/1 deps] curses
  - [ ] test_curses (untracked)
- [ ] [2/5 deps] io (51 dependents)
  - [ ] test_io (60 TODO)
  - [ ] test_bufio (2 TODO)
  - [ ] test_fileio
  - [ ] test_memoryio (26 TODO)
- [x] [2/6 deps] contextlib (22 dependents)
  - [ ] test_contextlib (5 TODO)
  - [ ] test_contextlib_async (5 TODO)
- [x] [2/2 deps] threading (19 dependents)
  - [ ] test_threading (20 TODO)
  - [ ] test_threadedtempfile
  - [ ] test_threading_local (3 TODO)
- [ ] [2/4 deps] fnmatch (7 dependents)
  - [ ] test_fnmatch
- [ ] [2/4 deps] sysconfig (7 dependents)
  - [ ] test_sysconfig (8 TODO)
- [ ] [2/2 deps] code (4 dependents)
  - [ ] test_code (11 TODO)
- [ ] [2/4 deps] platform (4 dependents)
  - [ ] test_platform
- [x] [2/4 deps] annotationlib (3 dependents)
  - [ ] test_annotationlib (untracked)
- [ ] [2/3 deps] pprint (2 dependents)
  - [ ] test_pprint
- [ ] [2/7 deps] glob (2 dependents)
  - [ ] test_glob
- [x] [2/2 deps] runpy (2 dependents)
  - [ ] test_runpy (3 TODO)
- [ ] [2/2 deps] tabnanny (1 dependents)
  - [ ] test_tabnanny (6 TODO)
- [ ] [2/6 deps] encodings (1 dependents)
- [ ] [2/2 deps] getopt
  - [ ] test_getopt
- [ ] [2/3 deps] getpass
  - [ ] test_getpass
- [ ] [2/2 deps] imaplib
  - [ ] test_imaplib (untracked)
- [ ] [2/2 deps] symtable
  - [ ] test_symtable (17 TODO)
- [ ] [2/2 deps] uuid
  - [ ] test_uuid
- [ ] [2/2 deps] cProfile
- [ ] [2/4 deps] tracemalloc
  - [ ] test_tracemalloc (untracked)
- [ ] [2/6 deps] wsgiref
  - [ ] test_wsgiref (1 TODO)
- [ ] [3/3 deps] socket (13 dependents)
  - [ ] test_socket (12 TODO)
- [ ] [3/4 deps] shutil (9 dependents)
  - [ ] test_shutil
- [ ] [3/7 deps] pickle (8 dependents)
  - [ ] test_pickle (26 TODO)
- [ ] [3/6 deps] tokenize (8 dependents)
  - [ ] test_tokenize (2 TODO)
- [ ] [3/8 deps] subprocess (7 dependents)
  - [ ] test_subprocess (10 TODO)
- [ ] [3/4 deps] dis (4 dependents)
  - [ ] test_dis (53 TODO)
- [x] [3/5 deps] socketserver (4 dependents)
  - [ ] test_socketserver (1 TODO)
- [ ] [3/4 deps] pkgutil (3 dependents)
  - [ ] test_pkgutil (1 TODO)
- [ ] [3/6 deps] bdb (2 dependents)
  - [ ] test_bdb (33 TODO)
- [ ] [3/6 deps] configparser (1 dependents)
  - [ ] test_configparser (1 TODO)
- [ ] [3/3 deps] py_compile (1 dependents)
  - [ ] test_py_compile (2 TODO)
- [x] [3/4 deps] sqlite3 (1 dependents)
  - [ ] test_sqlite3 (82 TODO)
- [ ] [3/5 deps] pickletools
  - [ ] test_pickletools (8 TODO)
- [ ] [3/5 deps] _strptime
- [ ] [3/6 deps] compileall
  - [ ] test_compileall (3 TODO)
- [ ] [3/5 deps] pstats
  - [ ] test_pstats (untracked)
- [ ] [3/3 deps] modulefinder
  - [ ] test_modulefinder (untracked)
- [ ] [4/9 deps] traceback (13 dependents)
  - [ ] test_traceback (71 TODO)
- [ ] [4/6 deps] tkinter (3 dependents)
  - [ ] test_tkinter (untracked)
- [ ] [4/5 deps] webbrowser (2 dependents)
  - [ ] test_webbrowser
- [ ] [4/8 deps] ctypes (2 dependents)
  - [ ] test_ctypes (14 TODO)
  - [ ] test_stable_abi_ctypes (untracked)
- [ ] [4/6 deps] zipapp
  - [ ] test_zipapp
- [ ] [4/6 deps] ssl
  - [ ] test_ssl (21 TODO)
- [ ] [4/8 deps] statistics
  - [ ] test_statistics (1 TODO)
- [ ] [4/7 deps] tarfile
  - [ ] test_tarfile (4 TODO)
- [x] [4/7 deps] dbm
  - [ ] test_dbm
  - [ ] test_dbm_gnu (untracked)
  - [ ] test_dbm_ndbm (untracked)
- [ ] [5/10 deps] pathlib (8 dependents)
  - [ ] test_pathlib (2 TODO)
- [ ] [5/8 deps] tempfile (7 dependents)
  - [ ] test_tempfile (1 TODO)
- [ ] [5/10 deps] zipfile (2 dependents)
  - [ ] test_zipfile (16 TODO)
- [x] [5/7 deps] plistlib (1 dependents)
  - [ ] test_plistlib (7 TODO)
- [ ] [5/5 deps] turtledemo (1 dependents)
- [ ] [5/10 deps] zoneinfo
  - [ ] test_zoneinfo (4 TODO)
- [x] [5/9 deps] mailbox
  - [ ] test_mailbox
- [ ] [5/7 deps] smtplib
  - [x] test_smtplib (2 TODO)
- [ ] [6/7 deps] venv
  - [ ] test_venv (4 TODO)
- [ ] [6/10 deps] trace
  - [ ] test_trace (20 TODO)
- [ ] [6/9 deps] xml
  - [ ] test_xml_etree (126 TODO)
  - [ ] test_xml_etree_c
  - [ ] test_minidom (untracked)
  - [ ] test_pulldom (4 TODO)
  - [ ] test_pyexpat (28 TODO)
  - [ ] test_sax (untracked)
- [x] [7/16 deps] inspect (13 dependents)
  - [ ] test_inspect (56 TODO)
- [ ] [7/14 deps] logging (4 dependents)
  - [ ] test_logging (9 TODO)
- [ ] [7/15 deps] email (3 dependents)
  - [ ] test_email (12 TODO)
- [ ] [7/10 deps] turtle (1 dependents)
  - [ ] test_turtle (untracked)
- [ ] [7/16 deps] urllib (1 dependents)
  - [ ] test_urllib
  - [ ] test_urllib2
  - [ ] test_urllib2_localnet (19 TODO)
  - [ ] test_urllib2net
  - [ ] test_urllibnet
  - [ ] test_urlparse (1 TODO)
  - [x] test_urllib_response
  - [ ] test_robotparser (1 TODO)
- [ ] [7/13 deps] doctest
  - [ ] test_doctest (13 TODO)
- [ ] [7/12 deps] xmlrpc
  - [ ] test_xmlrpc (5 TODO)
  - [ ] test_docxmlrpc (7 TODO)
- [ ] [8/11 deps] concurrent
- [ ] [9/16 deps] http
  - [ ] test_httplib
  - [ ] test_http_cookiejar
  - [ ] test_http_cookies
  - [ ] test_httpservers (13 TODO)
- [ ] [10/20 deps] importlib (4 dependents)
  - [ ] test_importlib (29 TODO)
- [ ] [10/16 deps] pydoc (1 dependents)
  - [ ] test_pydoc (untracked)
- [ ] [12/23 deps] unittest (2 dependents)
  - [ ] test_unittest (15 TODO)
- [ ] [13/29 deps] asyncio (2 dependents)
  - [ ] test_asyncio (untracked)
- [ ] [13/26 deps] multiprocessing (1 dependents)
  - [ ] test_multiprocessing_fork (79 TODO)
  - [ ] test_multiprocessing_forkserver (38 TODO)
  - [ ] test_multiprocessing_spawn (34 TODO)
- [ ] [14/30 deps] _pyrepl
- [ ] [16/30 deps] pdb (1 dependents)
  - [ ] test_pdb (untracked)
- [ ] [22/39 deps] idlelib

## Standalone Tests
- [ ] test___all__ (1 TODO)
- [ ] test__interpchannels (untracked)
- [ ] test__interpreters (untracked)
- [ ] test__locale (untracked)
- [ ] test_abstract_numbers
- [ ] test_android
- [ ] test_apple (untracked)
- [ ] test_array (5 TODO)
- [ ] test_asdl_parser (untracked)
- [ ] test_asyncgen (1 TODO)
- [ ] test_atexit
- [ ] test_audit
- [ ] test_exceptions (29 TODO)
  - [ ] test_baseexception
  - [ ] test_except_star (1 TODO)
  - [ ] test_exception_group (2 TODO)
  - [ ] test_exception_hierarchy (2 TODO)
  - [ ] test_exception_variations (1 TODO)
- [ ] test_bigmem (5 TODO)
- [ ] test_binascii (1 TODO)
- [ ] test_binop
- [ ] test_bool
- [ ] test_buffer
- [ ] test_build_details (untracked)
- [ ] test_builtin (18 TODO)
- [ ] test_bytes (17 TODO)
- [ ] test_c_locale_coercion (1 TODO)
- [ ] test_call (1 TODO)
- [ ] test_capi (untracked)
- [ ] test_cext (untracked)
- [ ] test_class (14 TODO)
  - [ ] test_genericclass (1 TODO)
  - [ ] test_subclassinit
- [ ] test_clinic (untracked)
- [ ] test_cmd_line (24 TODO)
- [ ] test_cmd_line_script (17 TODO)
- [ ] test_code_module (6 TODO)
- [ ] test_compile (26 TODO)
- [ ] test_compiler_assemble
- [ ] test_compiler_codegen
- [ ] test_complex (2 TODO)
- [ ] test_concurrent_futures (18 TODO)
- [ ] test_contains
- [ ] test_context (6 TODO)
- [ ] test_coroutines (untracked)
- [ ] test_cppext (untracked)
- [ ] test_cprofile (untracked)
- [ ] test_crossinterp (untracked)
- [ ] test_decorators (1 TODO)
- [ ] test_descr (44 TODO)
  - [ ] test_descrtut (1 TODO)
- [ ] test_dict (4 TODO)
  - [ ] test_dictcomps (1 TODO)
  - [ ] test_dictviews (2 TODO)
  - [ ] test_userdict
- [ ] test_dtrace (8 TODO)
- [ ] test_dynamic (1 TODO)
- [ ] test_dynamicclassattribute
- [ ] test_embed (untracked)
- [ ] test_errno
- [ ] test_extcall (untracked)
- [ ] test_external_inspection (untracked)
- [ ] test_faulthandler (30 TODO)
- [ ] test_fcntl
  - [ ] test_ioctl
- [ ] test_file
  - [ ] test_largefile
- [ ] test_file_eintr (1 TODO)
- [ ] test_fileutils (untracked)
- [ ] test_finalization (untracked)
- [ ] test_float (5 TODO)
- [ ] test_flufl (untracked)
- [ ] test_fork1 (untracked)
- [ ] test_format (5 TODO)
- [ ] test_frame (untracked)
- [ ] test_free_threading (untracked)
- [ ] test_frozen (untracked)
- [ ] test_str (18 TODO)
  - [ ] test_fstring (29 TODO)
  - [ ] test_string_literals (5 TODO)
- [ ] test_funcattrs (6 TODO)
- [ ] test_future_stmt (6 TODO)
- [ ] test_gc (untracked)
- [ ] test_gdb (untracked)
- [ ] test_generated_cases (untracked)
- [ ] test_generators (6 TODO)
  - [ ] test_genexps (untracked)
  - [ ] test_generator_stop (untracked)
  - [ ] test_yield_from (10 TODO)
- [ ] test_getpath (untracked)
- [ ] test_global (3 TODO)
- [ ] test_grammar (19 TODO)
- [ ] test_hash (4 TODO)
- [ ] test_idle (untracked)
- [ ] test_import (22 TODO)
- [ ] test_int (6 TODO)
  - [ ] test_long (4 TODO)
- [ ] test_interpreters (untracked)
- [ ] test_isinstance
- [ ] test_iter (1 TODO)
- [ ] test_itertools (27 TODO)
- [ ] test_launcher (untracked)
- [ ] test_list (5 TODO)
  - [ ] test_listcomps (2 TODO)
  - [ ] test_userlist
- [ ] test_lltrace (untracked)
- [ ] test_marshal (21 TODO)
- [ ] test_memoryview (6 TODO)
- [ ] test_metaclass (untracked)
- [ ] test_mmap (3 TODO)
- [ ] test_module (4 TODO)
- [ ] test_monitoring (untracked)
- [ ] test_msvcrt (untracked)
- [ ] test_named_expressions (18 TODO)
- [ ] test_opcache
- [ ] test_opcodes
- [ ] test_optimizer (untracked)
- [ ] test_osx_env (untracked)
- [ ] test_patma (20 TODO)
- [ ] test_peepholer (33 TODO)
- [ ] test_peg_generator (untracked)
- [ ] test_pep646_syntax (untracked)
- [ ] test_perf_profiler (untracked)
- [ ] test_perfmaps (untracked)
- [ ] test_picklebuffer (12 TODO)
- [ ] test_pkg
- [ ] test_poll (1 TODO)
- [ ] test_popen
- [ ] test_positional_only_arg (6 TODO)
- [ ] test_posix (8 TODO)
- [ ] test_print (7 TODO)
- [ ] test_property
- [ ] test_pyrepl (untracked)
- [ ] test_raise (1 TODO)
- [ ] test_range (1 TODO)
- [ ] test_readline (untracked)
- [ ] test_remote_pdb (untracked)
- [ ] test_repl
- [ ] test_resource (2 TODO)
- [ ] test_richcmp
- [ ] test_scope (1 TODO)
- [ ] test_support (4 TODO)
  - [ ] test_script_helper (4 TODO)
- [ ] test_select (untracked)
- [ ] test_set (5 TODO)
- [ ] test_sort (2 TODO)
- [ ] test_source_encoding (untracked)
- [ ] test_startfile (untracked)
- [ ] test_time (18 TODO)
  - [ ] test_strftime
- [ ] test_strtod (6 TODO)
- [ ] test_structseq
- [ ] test_sundry
- [ ] test_super (4 TODO)
- [ ] test_syntax (27 TODO)
- [ ] test_sys (17 TODO)
  - [ ] test_syslog (2 TODO)
  - [ ] test_sys_setprofile (22 TODO)
  - [ ] test_sys_settrace (85 TODO)
- [ ] test_tcl (untracked)
- [ ] test_termios (untracked)
- [ ] test_thread
  - [ ] test_thread_local_bytecode (untracked)
  - [ ] test_threadsignals (untracked)
- [ ] test_timeout
- [ ] test_tools
- [ ] test_tstring (untracked)
- [ ] test_ttk (untracked)
- [ ] test_ttk_textonly (untracked)
- [ ] test_tuple (1 TODO)
- [ ] test_type_cache (untracked)
- [ ] test_type_comments (16 TODO)
- [ ] test_unicode_file_functions
  - [ ] test_unicode_identifiers (1 TODO)
  - [ ] test_unicodedata (18 TODO)
- [ ] test_unpack
  - [ ] test_unpack_ex (untracked)
- [ ] test_utf8_mode (6 TODO)
- [ ] test_utf8source (2 TODO)
- [ ] test_weakset (2 TODO)
- [ ] test_winapi
- [ ] test_winconsoleio (untracked)
- [ ] test_winsound (untracked)
- [ ] test_with (1 TODO)
- [ ] test_wmi (untracked)
- [ ] test_xxlimited (untracked)
- [ ] test_xxtestfuzz (untracked)

## Untracked Files
- site-packages/README.txt

Summary by CodeRabbit

  • Bug Fixes

    • Improved library status check to correctly report up-to-date only when actual library paths are found and inspected.
  • Chores

    • Expanded dependency metadata with detailed per-module test listings for many standard modules.
    • Filtered out non-existent libraries from dependency processing to avoid spurious results.
    • Enhanced test tracking, grouping, ordering, and formatted output so tests are associated with their libraries and presented deterministically.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 24, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This PR expands DEPENDENCIES with extensive per-module test mappings, changes is_up_to_date() to require actual CPython library paths to be present before reporting up-to-date, and adds test-tracking/grouping helpers to compute and format TODOs grouped by library.

Changes

Cohort / File(s) Summary
Dependency Data & Path Validation
scripts/update_lib/deps.py
DEPENDENCIES expanded with many "test" entries for Rust-implemented and stdlib modules (~+264/-2). is_up_to_date() now tracks whether any CPython lib paths were found (found_any) and returns up-to-date only when paths were actually inspected and matched.
Library Path Filtering
scripts/update_lib/show_deps.py
Added use of get_lib_paths() when formatting deps and skip processing soft dependencies that have no CPython library paths present.
Test Tracking & Formatting
scripts/update_lib/show_todo.py
Added _build_test_to_lib_map(), is_test_tracked(), and _format_test_suffix(); compute_test_todo_list() gains lib_status usage; formatting functions now group tests by library, sort by per-lib test order, and render grouped output with tracking-aware suffixes. (~+124/-28)

Sequence Diagram

sequenceDiagram
    participant Script as update_lib script
    participant DEPS as DEPENDENCIES
    participant FS as FileSystem (cpython repo)
    participant Formatter as TodoFormatter

    Script->>DEPS: Load module entries (incl. "test" lists)
    Script->>FS: get_lib_paths(module)
    alt lib paths found
        FS-->>Script: lib paths list
        Script->>FS: check CPython test file exists for each test
        alt test exists
            FS-->>Script: test path found
            Script->>Formatter: mark test as tracked, assign lib_name & order
        else test missing
            FS-->>Script: not found
            Script->>Formatter: mark test as untracked
        end
        Script->>Formatter: group tests by lib, sort by test_order
        Formatter-->>Script: formatted grouped TODO lines with suffixes
    else no lib paths
        FS-->>Script: no paths
        Script->>Formatter: skip dependency (no tests collected)
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • moreal
  • ShaharNaveh

Poem

🐰 Hop-hop, the tests now find their trail,
Mapped to libs, in order without fail,
DEPENDENCIES sprout lists, neat and clear,
Grouped and tracked — the TODOs appear! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '[update_lib] deps grouping' accurately reflects the main changes: expanding DEPENDENCIES with per-module test entries and reorganizing test grouping/ordering logic throughout the three modified scripts.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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 and usage tips.

@youknowone youknowone added the skip:ci Skip running the ci label Jan 24, 2026
@youknowone youknowone marked this pull request as ready for review January 24, 2026 10:14
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
scripts/update_lib/show_todo.py (1)

365-406: Update scoring docstring to match the new 0/1/2 scheme.

The docstring still describes the old score meanings, while the code now uses 0 (ready), 1 (no lib), 2 (pending).

✏️ Docstring fix
-        - If corresponding lib is NOT up-to-date: score = 1 (wait for lib)
-        - If no corresponding lib: score = -1 (independent)
+        - If corresponding lib is NOT up-to-date: score = 2 (wait for lib)
+        - If no corresponding lib: score = 1 (independent)
scripts/update_lib/deps.py (1)

726-750: Handle modules with intentionally empty lib lists.

Modules with "lib": [] (Rust-only implementations like int, exception, dict, list) currently return False from is_up_to_date() since found_any is never set to True. These modules have no CPython lib files to compare, so the empty result should be treated as up-to-date, not as pending. Without this fix, they appear as out-of-sync in dependent test views despite having no lib synchronization requirement.

Consider adding explicit handling:

Suggested fix
-    return found_any
+    if not found_any:
+        dep_info = DEPENDENCIES.get(name, {})
+        if dep_info.get("lib") == []:
+            return True
+    return found_any

test_order = lib_test_order[lib_name].index(test_name)
else:
# Extract lib name from test name (test_foo -> foo)
lib_name = test_name[5:] if test_name.startswith("test_") else test_name
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
lib_name = test_name[5:] if test_name.startswith("test_") else test_name
lib_name = test_name.removeprefix("test_")

Copy link
Contributor

@ShaharNaveh ShaharNaveh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

@youknowone youknowone merged commit 0cc8f63 into RustPython:main Jan 24, 2026
8 of 9 checks passed
@youknowone youknowone deleted the todo branch January 24, 2026 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip:ci Skip running the ci

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants