Skip to content

Conversation

@youknowone
Copy link
Member

@youknowone youknowone commented Jan 20, 2026

cc @ShaharNaveh @moreal

This is the last piece of todays series.

Simple heuristic. More dependents means more fundamental. Less dependency means easier to update.

The higher, the better.

We will need a dashboard for this

$ python scripts/update_lib todo
[ ] [no deps] struct (19 dependents)
[ ] [no deps] reprlib (7 dependents)
[ ] [no deps] token (4 dependents)
[ ] [no deps] pydoc_data (1 dependents)
[ ] [0/2 deps] types (39 dependents)
[ ] [0/1 deps] operator (14 dependents)
[ ] [0/1 deps] textwrap (9 dependents)
[ ] [0/2 deps] codeop (3 dependents)
[ ] [0/2 deps] html (3 dependents)
[ ] [0/1 deps] cmd (2 dependents)
[ ] [0/1 deps] opcode (1 dependents)
[ ] [1/2 deps] enum (16 dependents)
[ ] [1/3 deps] weakref (15 dependents)
[ ] [1/4 deps] datetime (12 dependents)
[ ] [1/4 deps] posixpath (9 dependents)
[ ] [1/2 deps] codecs (8 dependents)
[ ] [1/5 deps] ast (7 dependents)
[ ] [1/2 deps] copyreg (6 dependents)
[ ] [1/1 deps] hashlib (6 dependents)
[ ] [1/4 deps] json (5 dependents)
[ ] [1/2 deps] hmac (4 dependents)
[ ] [1/3 deps] ntpath (3 dependents)
[ ] [1/2 deps] pty
[ ] [1/1 deps] curses
[ ] [2/2 deps] linecache (11 dependents)
[ ] [2/2 deps] getopt (10 dependents)
[ ] [2/4 deps] fnmatch (8 dependents)
[ ] [2/6 deps] locale (7 dependents)
[ ] [2/4 deps] difflib (4 dependents)
[ ] [2/4 deps] queue (4 dependents)
[ ] [2/3 deps] code (3 dependents)
[ ] [2/6 deps] decimal (3 dependents)
[ ] [2/2 deps] quopri (2 dependents)
[ ] [2/3 deps] csv (1 dependents)
[ ] [2/4 deps] ftplib (1 dependents)
[ ] [2/5 deps] fractions (1 dependents)
[ ] [2/4 deps] getpass (1 dependents)
[ ] [2/3 deps] zipimport (1 dependents)
[ ] [2/3 deps] nturl2path
[ ] [2/3 deps] symtable
[ ] [3/7 deps] io (53 dependents)
[ ] [3/6 deps] collections (45 dependents)
[ ] [3/4 deps] socket (17 dependents)
[ ] [3/3 deps] copy (14 dependents)
[ ] [3/3 deps] shlex (4 dependents)
[ ] [3/9 deps] dataclasses (4 dependents)
[ ] [3/8 deps] glob (4 dependents)
[ ] [3/3 deps] optparse (2 dependents)
[ ] [3/6 deps] configparser (2 dependents)
[ ] [3/5 deps] mimetypes (2 dependents)
[ ] [3/7 deps] encodings (2 dependents)
[ ] [3/3 deps] tabnanny (1 dependents)
[ ] [3/4 deps] poplib
[ ] [3/4 deps] wave
[ ] [3/8 deps] tomllib
[ ] [4/8 deps] os (85 dependents)
[ ] [4/9 deps] subprocess (14 dependents)
[ ] [4/7 deps] tokenize (10 dependents)
[ ] [4/7 deps] ssl (8 dependents)
[ ] [4/8 deps] random (8 dependents)
[ ] [4/9 deps] sysconfig (6 dependents)
[ ] [4/5 deps] dis (5 dependents)
[ ] [4/5 deps] pprint (4 dependents)
[ ] [4/7 deps] pkgutil (3 dependents)
[ ] [4/5 deps] py_compile (2 dependents)
[ ] [4/6 deps] pstats (2 dependents)
[ ] [4/9 deps] site (1 dependents)
[ ] [4/6 deps] pickletools
[ ] [4/7 deps] zipapp
[ ] [4/5 deps] timeit
[ ] [5/10 deps] shutil (13 dependents)
[ ] [5/7 deps] gettext (3 dependents)
[ ] [5/6 deps] tracemalloc (1 dependents)
[ ] [5/6 deps] profile (1 dependents)
[ ] [5/8 deps] statistics (1 dependents)
[ ] [5/13 deps] tarfile (1 dependents)
[ ] [5/5 deps] modulefinder
[ ] [6/9 deps] pickle (9 dependents)
[ ] [6/8 deps] tempfile (8 dependents)
[ ] [6/9 deps] webbrowser (4 dependents)
[ ] [6/12 deps] platform (4 dependents)
[ ] [6/10 deps] bdb (2 dependents)
[ ] [6/7 deps] cProfile
[ ] [7/9 deps] tkinter (3 dependents)
[ ] [7/9 deps] smtplib (1 dependents)
[ ] [7/7 deps] turtledemo (1 dependents)
[ ] [7/11 deps] compileall
[ ] [7/8 deps] venv
[ ] [8/12 deps] traceback (20 dependents)
[ ] [8/13 deps] pathlib (7 dependents)
[ ] [8/10 deps] ctypes (4 dependents)
[ ] [8/11 deps] xml (2 dependents)
[ ] [8/14 deps] doctest (1 dependents)
[ ] [8/13 deps] zoneinfo
[ ] [8/12 deps] trace
[ ] [9/18 deps] zipfile (3 dependents)
[ ] [9/11 deps] concurrent (2 dependents)
[ ] [9/10 deps] uuid (1 dependents)
[ ] [9/12 deps] imaplib
[ ] [10/13 deps] turtle (1 dependents)
[ ] [10/16 deps] xmlrpc (1 dependents)
[ ] [10/13 deps] wsgiref
[ ] [11/17 deps] email (7 dependents)
[ ] [13/21 deps] urllib (10 dependents)
[ ] [13/23 deps] unittest (2 dependents)
[ ] [14/23 deps] importlib (17 dependents)
[ ] [18/27 deps] http (5 dependents)
[ ] [18/25 deps] pydoc (3 dependents)
[ ] [19/26 deps] logging (7 dependents)
[ ] [19/31 deps] multiprocessing (3 dependents)
[ ] [20/34 deps] asyncio (2 dependents)
[ ] [22/36 deps] pdb (1 dependents)
[ ] [33/45 deps] idlelib (2 dependents)
$ python scripts/update_lib todo --verbose --done
[ ] [no deps] struct (19 dependents)
  dependents: asyncio, base64, compileall, ctypes, dbm, gettext, gzip, idlelib, logging, multiprocessing, pickle, pickletools, platform, plistlib, tarfile, wave, zipfile, zipimport, zoneinfo
  native: _struct
[x] [no deps] stat (15 dependents)
  dependents: asyncio, filecmp, genericpath, glob, io, netrc, os, pathlib, pdb, posixpath, shutil, site, tarfile, zipapp, zipfile
  native: _stat
[x] [no deps] keyword (7 dependents)
  dependents: annotationlib, collections, dataclasses, idlelib, inspect, rlcompleter, traceback
[ ] [no deps] reprlib (7 dependents)
  dependents: asyncio, bdb, collections, dataclasses, functools, idlelib, pydoc
  native: _thread, builtins, itertools, math, sys
[x] [no deps] bisect (5 dependents)
  dependents: multiprocessing, random, statistics, urllib, zoneinfo
  native: _bisect
[ ] [no deps] token (4 dependents)
  dependents: inspect, pdb, tokenize, trace
[ ] [no deps] pydoc_data (1 dependents)
  dependents: pydoc
[x] [no deps] stringprep (1 dependents)
  dependents: encodings
  native: unicodedata
[x] [no deps] tty (1 dependents)
  dependents: pty
  native: termios
[x] [no deps] colorsys
[x] [no deps] this
[ ] [0/2 deps] types (39 dependents)
  dependents: annotationlib, asyncio, concurrent, contextlib, copy, csv, ctypes, dataclasses, difflib, dis, email, enum, filecmp, fileinput, functools, graphlib, http, idlelib, importlib, inspect, logging, mailbox, multiprocessing, pdb, pickle, pprint, queue, subprocess, sysconfig, tempfile, tkinter, tomllib, turtle, typing, unittest, urllib, venv, warnings, wsgiref
  python: _collections_abc, functools
  native: _types, sys
[ ] [0/1 deps] operator (14 dependents)
  dependents: collections, copyreg, datetime, email, fractions, functools, gettext, glob, importlib, inspect, pathlib, random, statistics, typing
  python: functools
  native: _operator, builtins
[x] [0/2 deps] abc (13 dependents)
  dependents: contextlib, dataclasses, email, functools, importlib, inspect, io, multiprocessing, numbers, os, pathlib, selectors, typing
  python: _py_abc, _weakrefset
  native: _abc
[ ] [0/1 deps] textwrap (9 dependents)
  dependents: argparse, idlelib, importlib, optparse, pdb, pydoc, site, sqlite3, traceback
  python: re
[ ] [0/2 deps] codeop (3 dependents)
  dependents: code, pdb, traceback
  python: __future__, warnings
[ ] [0/2 deps] html (3 dependents)
  dependents: http, idlelib, xmlrpc
  python: _markupbase, re
[x] [0/1 deps] numbers (3 dependents)
  dependents: decimal, fractions, statistics
  python: abc
[x] [0/1 deps] contextvars (3 dependents)
  dependents: asyncio, decimal, unittest
  python: _collections_abc
  native: _contextvars
[x] [0/4 deps] rlcompleter (3 dependents)
  dependents: asyncio, pdb, site
  python: inspect, keyword, re, warnings
  native: __main__, atexit, builtins, readline
[ ] [0/1 deps] cmd (2 dependents)
  dependents: pdb, pstats
  python: inspect
  native: readline, sys
[x] [0/2 deps] ipaddress (1 dependents)
  dependents: urllib
  python: functools, re
[ ] [0/1 deps] opcode (1 dependents)
  dependents: dis
  python: _opcode_metadata
  native: _opcode, builtins
[x] [0/2 deps] sre_compile
  python: re, warnings
[x] [0/2 deps] sre_constants
  python: re, warnings
[x] [0/2 deps] sre_parse
  python: re, warnings
[ ] [1/2 deps] enum (16 dependents)
  dependents: annotationlib, asyncio, calendar, compression, http, inspect, plistlib, pstats, py_compile, re, signal, socket, ssl, symtable, tkinter, uuid
  python: inspect, types
  native: builtins, sys
[ ] [1/3 deps] weakref (15 dependents)
  dependents: asyncio, bdb, concurrent, copy, functools, gzip, inspect, logging, multiprocessing, pdb, symtable, tempfile, unittest, xml, zoneinfo
  python: _collections_abc, _weakrefset, copy
  native: _weakref, atexit, gc, itertools, sys
[ ] [1/4 deps] datetime (12 dependents)
  dependents: calendar, email, http, imaplib, plistlib, smtplib, sqlite3, tomllib, turtle, turtledemo, xmlrpc, zoneinfo
  python: _pydatetime, _strptime, operator, warnings
  native: _datetime, math, sys, time
[ ] [1/4 deps] posixpath (9 dependents)
  dependents: fnmatch, http, importlib, mimetypes, os, pathlib, wsgiref, xml, zipfile
  python: genericpath, os, re, stat
  native: errno, posix, pwd, sys
[ ] [1/2 deps] codecs (8 dependents)
  dependents: encodings, io, json, pickle, pickletools, plistlib, tokenize, xml
  python: encodings, warnings
  native: _codecs, builtins, sys
[ ] [1/5 deps] ast (7 dependents)
  dependents: annotationlib, asyncio, dbm, inspect, pyclbr, pydoc, traceback
  python: _ast_unparse, argparse, collections, inspect, re
  native: _ast, sys
[ ] [1/2 deps] copyreg (6 dependents)
  dependents: copy, idlelib, multiprocessing, pickle, re, typing
  python: operator, typing
[x] [1/2 deps] selectors (6 dependents)
  dependents: asyncio, multiprocessing, pdb, socket, socketserver, subprocess
  python: abc, collections
  native: math, select, sys
[ ] [1/1 deps] hashlib (6 dependents)
  dependents: antigravity, hmac, poplib, random, urllib, uuid
  python: logging
  native: _blake2, _hashlib, _md5, _sha1, _sha2, _sha3
[x] [1/1 deps] heapq (5 dependents)
  dependents: asyncio, collections, difflib, queue, sched
  python: doctest
  native: _heapq
[x] [1/1 deps] signal (5 dependents)
  dependents: asyncio, multiprocessing, pdb, subprocess, unittest
  python: enum
  native: _signal
[x] [1/2 deps] string (5 dependents)
  dependents: email, http, idlelib, logging, urllib
  python: collections, re
  native: _string, itertools
[ ] [1/4 deps] json (5 dependents)
  dependents: importlib, logging, multiprocessing, pdb, sysconfig
  python: _colorize, argparse, codecs, re
  native: _json, decoder, encoder, sys
[ ] [1/2 deps] hmac (4 dependents)
  dependents: imaplib, multiprocessing, secrets, smtplib
  python: hashlib, warnings
  native: _hashlib, _hmac, _operator
[ ] [1/3 deps] ntpath (3 dependents)
  dependents: nturl2path, os, pathlib
  python: genericpath, os, re
  native: _winapi, nt, sys
[x] [1/2 deps] genericpath (2 dependents)
  dependents: ntpath, posixpath
  python: os, stat
[x] [1/2 deps] netrc (1 dependents)
  dependents: ftplib
  python: os, stat
  native: pwd
[x] [1/1 deps] graphlib
  python: types
[x] [1/3 deps] sched
  python: collections, heapq, threading
  native: itertools, time
[ ] [1/2 deps] pty
  python: os, tty
  native: fcntl, select, sys
[ ] [1/1 deps] curses
  python: os
  native: _curses, _curses_panel, has_key, sys
[x] [2/4 deps] re (60 dependents)
  dependents: argparse, ast, compileall, configparser, csv, ctypes, dataclasses, decimal, difflib, doctest, email, encodings, fnmatch, fractions, ftplib, gettext, glob, html, http, idlelib, imaplib, importlib, inspect, ipaddress, json, locale, logging, ntpath, pdb, pickletools, pkgutil, platform, plistlib, poplib, posixpath, pprint, pstats, pydoc, rlcompleter, smtplib, sre_compile, sre_constants, sre_parse, string, sysconfig, tarfile, textwrap, tkinter, tokenize, tomllib, turtle, typing, unittest, urllib, warnings, wsgiref, xml, xmlrpc, zipfile, zoneinfo
  python: copyreg, enum, functools, warnings
  native: _casefix, _constants, _sre, sys, unicodedata
[ ] [2/2 deps] linecache (11 dependents)
  dependents: asyncio, bdb, doctest, idlelib, inspect, pdb, timeit, trace, traceback, tracemalloc, warnings
  python: os, tokenize
  native: sys
[ ] [2/2 deps] getopt (10 dependents)
  dependents: base64, filecmp, fileinput, idlelib, imaplib, modulefinder, pydoc, quopri, tabnanny, timeit
  python: gettext, os
  native: sys
[ ] [2/4 deps] fnmatch (8 dependents)
  dependents: bdb, glob, idlelib, shutil, tkinter, tracemalloc, unittest, urllib
  python: functools, os, posixpath, re
  native: itertools
[ ] [2/6 deps] locale (7 dependents)
  dependents: calendar, decimal, gettext, io, site, subprocess, tkinter
  python: _collections_abc, encodings, functools, os, re, warnings
  native: _locale, builtins, sys
[x] [2/3 deps] bz2 (6 dependents)
  dependents: compression, encodings, fileinput, shutil, tarfile, zipfile
  python: compression, io, os
  native: _bz2, builtins
[ ] [2/4 deps] difflib (4 dependents)
  dependents: argparse, doctest, traceback, unittest
  python: collections, heapq, re, types
[x] [2/3 deps] lzma (4 dependents)
  dependents: compression, shutil, tarfile, zipfile
  python: compression, io, os
  native: _lzma, builtins
[ ] [2/4 deps] queue (4 dependents)
  dependents: concurrent, idlelib, logging, multiprocessing
  python: collections, heapq, threading, types
  native: _queue, time
[ ] [2/3 deps] code (3 dependents)
  dependents: idlelib, pdb, sqlite3
  python: argparse, codeop, traceback
  native: builtins, readline, sys
[ ] [2/6 deps] decimal (3 dependents)
  dependents: fractions, statistics, xmlrpc
  python: _pydecimal, collections, contextvars, locale, numbers, re
  native: _decimal, itertools, math, sys
[ ] [2/2 deps] quopri (2 dependents)
  dependents: email, encodings
  python: getopt, io
  native: binascii, sys
[x] [2/3 deps] secrets (1 dependents)
  dependents: multiprocessing
  python: base64, hmac, random
[ ] [2/3 deps] csv (1 dependents)
  dependents: importlib
  python: io, re, types
  native: _csv
[ ] [2/4 deps] ftplib (1 dependents)
  dependents: urllib
  python: netrc, re, socket, ssl
  native: sys
[ ] [2/5 deps] fractions (1 dependents)
  dependents: statistics
  python: decimal, functools, numbers, operator, re
  native: math, sys
[ ] [2/4 deps] getpass (1 dependents)
  dependents: imaplib
  python: contextlib, io, os, warnings
  native: msvcrt, pwd, sys, termios
[ ] [2/3 deps] zipimport (1 dependents)
  dependents: pkgutil
  python: importlib, struct, warnings
  native: _frozen_importlib, _frozen_importlib_external, _imp, _io, marshal, sys, time, zlib
[x] [2/2 deps] antigravity
  python: hashlib, webbrowser
[ ] [2/3 deps] nturl2path
  python: ntpath, urllib, warnings
[ ] [2/3 deps] symtable
  python: enum, warnings, weakref
  native: _symtable, sys
[ ] [3/7 deps] io (53 dependents)
  dependents: asyncio, base64, bz2, cProfile, compression, configparser, csv, dbm, dis, doctest, email, encodings, fileinput, getpass, gzip, http, idlelib, imaplib, importlib, logging, lzma, mailbox, modulefinder, multiprocessing, os, pathlib, pdb, pickle, pickletools, plistlib, pprint, profile, pydoc, quopri, runpy, shelve, shlex, smtplib, socket, socketserver, subprocess, tarfile, tempfile, tokenize, trace, traceback, unittest, urllib, uuid, wsgiref, xml, xmlrpc, zipfile
  python: _collections_abc, abc, codecs, locale, os, stat, warnings
  native: _io, _thread, errno, msvcrt, sys
[ ] [3/6 deps] collections (45 dependents)
  dependents: ast, asyncio, concurrent, configparser, contextlib, dbm, decimal, difflib, dis, doctest, email, functools, http, idlelib, importlib, inspect, logging, multiprocessing, pkgutil, platform, pprint, pydoc, queue, sched, selectors, shelve, shlex, shutil, sqlite3, ssl, statistics, string, threading, tkinter, tokenize, tomllib, traceback, tracemalloc, typing, unittest, urllib, wave, wsgiref, xml, zoneinfo
  python: _collections_abc, copy, heapq, keyword, operator, reprlib
  native: _collections, _weakref, itertools, sys
[x] [3/6 deps] contextlib (21 dependents)
  dependents: asyncio, bdb, configparser, dbm, ensurepip, getpass, glob, http, idlelib, importlib, mailbox, pdb, subprocess, traceback, turtle, typing, unittest, urllib, xml, zipapp, zipfile
  python: _collections_abc, abc, collections, functools, os, types
  native: sys
[x] [3/6 deps] threading (19 dependents)
  dependents: asyncio, bdb, concurrent, http, idlelib, importlib, logging, multiprocessing, pdb, pydoc, queue, sched, socketserver, subprocess, sysconfig, trace, unittest, webbrowser, zipfile
  python: _threading_local, _weakrefset, collections, os, traceback, warnings
  native: _collections, _contextvars, _thread, itertools, sys, time
[ ] [3/4 deps] socket (17 dependents)
  dependents: asyncio, email, ftplib, http, idlelib, imaplib, logging, mailbox, multiprocessing, pdb, platform, poplib, smtplib, socketserver, ssl, urllib, uuid
  python: enum, io, os, selectors
  native: _socket, array, errno, sys
[ ] [3/3 deps] copy (14 dependents)
  dependents: argparse, collections, dataclasses, email, gettext, http, logging, mailbox, smtplib, tarfile, turtle, weakref, webbrowser, xml
  python: copyreg, types, weakref
[x] [3/3 deps] base64 (10 dependents)
  dependents: email, encodings, http, logging, multiprocessing, secrets, smtplib, ssl, urllib, xmlrpc
  python: getopt, io, struct
  native: binascii, sys
[x] [3/6 deps] calendar (6 dependents)
  dependents: email, http, imaplib, mailbox, ssl, zoneinfo
  python: _colorize, argparse, datetime, enum, locale, warnings
  native: itertools, sys
[x] [3/6 deps] compression (6 dependents)
  dependents: bz2, gzip, lzma, shutil, tarfile, zipfile
  python: bz2, enum, gzip, io, lzma, os
  native: _zstd, sys, zlib
[x] [3/6 deps] annotationlib (5 dependents)
  dependents: dataclasses, functools, inspect, pydoc, typing
  python: ast, enum, keyword, types, typing, warnings
  native: builtins, sys
[ ] [3/3 deps] shlex (4 dependents)
  dependents: idlelib, pdb, venv, webbrowser
  python: collections, io, os
  native: sys
[ ] [3/9 deps] dataclasses (4 dependents)
  dependents: asyncio, pprint, pstats, unittest
  python: abc, annotationlib, copy, inspect, keyword, re, reprlib, types, typing
  native: itertools, sys
[ ] [3/8 deps] glob (4 dependents)
  dependents: idlelib, pathlib, pdb, zipfile
  python: contextlib, fnmatch, functools, operator, os, re, stat, warnings
  native: itertools, sys
[ ] [3/3 deps] optparse (2 dependents)
  dependents: cProfile, profile
  python: gettext, os, textwrap
  native: sys
[ ] [3/6 deps] configparser (2 dependents)
  dependents: idlelib, logging
  python: collections, contextlib, functools, io, os, re
  native: itertools, sys
[ ] [3/5 deps] mimetypes (2 dependents)
  dependents: http, urllib
  python: argparse, os, posixpath, urllib, warnings
  native: _winapi, sys, winreg
[ ] [3/7 deps] encodings (2 dependents)
  dependents: codecs, locale
  python: base64, bz2, codecs, io, quopri, re, stringprep
  native: _codecs_cn, _codecs_hk, _codecs_iso2022, _codecs_jp, _codecs_kr, _codecs_tw, _multibytecodec, _win_cp_codecs, binascii, sys, unicodedata, zlib
[x] [3/3 deps] pyclbr (1 dependents)
  dependents: idlelib
  python: ast, importlib, os
  native: sys
[ ] [3/3 deps] tabnanny (1 dependents)
  dependents: idlelib
  python: getopt, os, tokenize
  native: sys
[x] [3/4 deps] filecmp (1 dependents)
  dependents: compileall
  python: getopt, os, stat, types
  native: itertools, sys
[x] [3/4 deps] shelve
  python: collections, dbm, io, pickle
[ ] [3/4 deps] poplib
  python: hashlib, re, socket, ssl
  native: errno, sys
[ ] [3/4 deps] wave
  python: collections, struct, uuid, warnings
  native: builtins, sys
[ ] [3/8 deps] tomllib
  python: __future__, collections, datetime, functools, re, types, typing, warnings
  native: _parser, _re, _types
[ ] [4/8 deps] os (85 dependents)
  dependents: argparse, asyncio, bdb, bz2, cProfile, compileall, compression, concurrent, configparser, contextlib, ctypes, curses, dbm, doctest, email, ensurepip, filecmp, fileinput, fnmatch, functools, genericpath, getopt, getpass, gettext, glob, gzip, http, idlelib, importlib, inspect, io, linecache, locale, logging, lzma, mailbox, mimetypes, modulefinder, multiprocessing, netrc, ntpath, optparse, pathlib, pdb, pkgutil, platform, plistlib, posixpath, profile, pstats, pty, py_compile, pyclbr, pydoc, random, runpy, shlex, shutil, site, socket, socketserver, ssl, subprocess, sysconfig, tabnanny, tarfile, tempfile, threading, timeit, tkinter, trace, tracemalloc, turtle, turtledemo, unittest, urllib, uuid, venv, webbrowser, wsgiref, xml, xmlrpc, zipapp, zipfile, zoneinfo
  python: _collections_abc, abc, io, ntpath, posixpath, stat, subprocess, warnings
  native: nt, posix, sys
[x] [4/8 deps] warnings (61 dependents)
  dependents: annotationlib, argparse, asyncio, calendar, codecs, codeop, ctypes, datetime, fileinput, functools, getpass, gettext, glob, gzip, hmac, http, idlelib, imaplib, importlib, io, locale, logging, mailbox, mimetypes, multiprocessing, nturl2path, os, pathlib, pdb, platform, pydoc, random, re, rlcompleter, runpy, shutil, site, sqlite3, sre_compile, sre_constants, sre_parse, ssl, subprocess, symtable, sysconfig, tarfile, tempfile, threading, timeit, tkinter, tomllib, traceback, typing, unittest, urllib, wave, wsgiref, xml, zipfile, zipimport, zoneinfo
  python: _py_warnings, functools, inspect, linecache, re, traceback, tracemalloc, types
  native: _contextvars, _thread, _warnings, builtins, sys
[ ] [4/9 deps] subprocess (14 dependents)
  dependents: asyncio, ctypes, ensurepip, http, idlelib, imaplib, multiprocessing, os, platform, turtle, turtledemo, uuid, venv, webbrowser
  python: contextlib, io, locale, os, selectors, signal, threading, types, warnings
  native: _posixsubprocess, _winapi, builtins, errno, fcntl, grp, msvcrt, pwd, select, sys, time
[ ] [4/7 deps] tokenize (10 dependents)
  dependents: asyncio, idlelib, importlib, inspect, linecache, pdb, pydoc, tabnanny, trace, traceback
  python: argparse, codecs, collections, functools, io, re, token
  native: _tokenize, builtins, itertools, sys
[x] [4/11 deps] typing (9 dependents)
  dependents: annotationlib, copyreg, dataclasses, functools, importlib, pathlib, pdb, tomllib, wsgiref
  python: abc, annotationlib, collections, contextlib, copyreg, functools, inspect, operator, re, types, warnings
  native: _typing, sys
[ ] [4/7 deps] ssl (8 dependents)
  dependents: asyncio, ftplib, http, imaplib, logging, poplib, smtplib, urllib
  python: base64, calendar, collections, enum, os, socket, warnings
  native: _ssl, errno, sys, time
[ ] [4/8 deps] random (8 dependents)
  dependents: email, imaplib, secrets, statistics, tempfile, turtle, turtledemo, uuid
  python: _collections_abc, argparse, bisect, hashlib, operator, os, statistics, warnings
  native: _random, _sha2, itertools, math, time
[ ] [4/9 deps] sysconfig (6 dependents)
  dependents: ctypes, ensurepip, pydoc, trace, venv, zoneinfo
  python: _aix_support, _osx_support, importlib, json, os, re, threading, types, warnings
  native: _sysconfig, _winapi, sys
[x] [4/5 deps] runpy (5 dependents)
  dependents: cProfile, multiprocessing, pdb, profile, trace
  python: importlib, io, os, pkgutil, warnings
  native: sys
[ ] [4/5 deps] dis (5 dependents)
  dependents: bdb, inspect, modulefinder, pdb, trace
  python: argparse, collections, io, opcode, types
  native: _opcode, sys
[ ] [4/5 deps] pprint (4 dependents)
  dependents: idlelib, pdb, pickle, unittest
  python: collections, dataclasses, io, re, types
  native: sys
[x] [4/6 deps] socketserver (4 dependents)
  dependents: http, idlelib, logging, xmlrpc
  python: io, os, selectors, socket, threading, traceback
  native: sys, time
[x] [4/7 deps] gzip (4 dependents)
  dependents: compression, fileinput, tarfile, xmlrpc
  python: argparse, compression, io, os, struct, warnings, weakref
  native: builtins, errno, sys, time, zlib
[ ] [4/7 deps] pkgutil (3 dependents)
  dependents: pydoc, runpy, unittest
  python: collections, functools, importlib, inspect, os, re, zipimport
  native: marshal, sys
[ ] [4/5 deps] py_compile (2 dependents)
  dependents: compileall, zipfile
  python: argparse, enum, importlib, os, traceback
  native: sys
[ ] [4/6 deps] pstats (2 dependents)
  dependents: cProfile, profile
  python: cmd, dataclasses, enum, functools, os, re
  native: marshal, readline, sys, time
[x] [4/6 deps] sqlite3 (1 dependents)
  dependents: dbm
  python: argparse, code, collections, datetime, textwrap, warnings
  native: _sqlite3, readline, sys, time
[ ] [4/9 deps] site (1 dependents)
  dependents: asyncio
  python: _pyrepl, _sitebuiltins, locale, os, rlcompleter, stat, textwrap, traceback, warnings
  native: _io, atexit, builtins, errno, readline, sitecustomize, sys, usercustomize
[x] [4/7 deps] fileinput
  python: bz2, getopt, gzip, io, os, types, warnings
  native: sys
[ ] [4/6 deps] pickletools
  python: argparse, codecs, io, pickle, re, struct
  native: sys
[ ] [4/7 deps] zipapp
  python: argparse, contextlib, os, pathlib, shutil, stat, zipfile
  native: sys
[ ] [4/5 deps] timeit
  python: getopt, linecache, os, traceback, warnings
  native: gc, itertools, sys, time
[ ] [5/10 deps] shutil (13 dependents)
  dependents: argparse, ctypes, ensurepip, http, multiprocessing, pathlib, tarfile, tempfile, uuid, venv, webbrowser, zipapp, zipfile
  python: bz2, collections, compression, fnmatch, lzma, os, stat, tarfile, warnings, zipfile
  native: _winapi, errno, grp, nt, posix, pwd, sys, zlib
[ ] [5/7 deps] gettext (3 dependents)
  dependents: argparse, getopt, optparse
  python: copy, locale, operator, os, re, struct, warnings
  native: builtins, errno, sys
[ ] [5/6 deps] tracemalloc (1 dependents)
  dependents: warnings
  python: collections, fnmatch, functools, linecache, os, pickle
  native: _tracemalloc
[ ] [5/6 deps] profile (1 dependents)
  dependents: cProfile
  python: importlib, io, optparse, os, pstats, runpy
  native: __main__, marshal, sys, time
[ ] [5/8 deps] statistics (1 dependents)
  dependents: random
  python: bisect, collections, decimal, fractions, functools, numbers, operator, random
  native: _statistics, itertools, math, sys
[ ] [5/13 deps] tarfile (1 dependents)
  dependents: shutil
  python: argparse, bz2, compression, copy, gzip, io, lzma, os, re, shutil, stat, struct, warnings
  native: builtins, grp, pwd, sys, time, zlib
[ ] [5/5 deps] modulefinder
  python: dis, getopt, importlib, io, os
  native: marshal, sys
[x] [6/10 deps] functools (36 dependents)
  dependents: asyncio, bdb, compileall, concurrent, configparser, contextlib, doctest, email, fnmatch, fractions, glob, idlelib, importlib, inspect, ipaddress, locale, logging, multiprocessing, operator, pickle, pkgutil, platform, pstats, re, statistics, tempfile, tokenize, tomllib, tracemalloc, types, typing, unittest, urllib, warnings, xmlrpc, zoneinfo
  python: abc, annotationlib, collections, operator, os, reprlib, types, typing, warnings, weakref
  native: _functools, _thread
[x] [6/9 deps] argparse (29 dependents)
  dependents: ast, asyncio, calendar, code, compileall, dis, doctest, ensurepip, gzip, http, inspect, json, mimetypes, pdb, pickle, pickletools, platform, py_compile, random, sqlite3, tarfile, tokenize, trace, unittest, uuid, venv, webbrowser, zipapp, zipfile
  python: _colorize, copy, difflib, gettext, os, re, shutil, textwrap, warnings
  native: sys
[ ] [6/9 deps] pickle (9 dependents)
  dependents: concurrent, idlelib, logging, multiprocessing, pickletools, shelve, trace, tracemalloc, zoneinfo
  python: _compat_pickle, argparse, codecs, copyreg, functools, io, pprint, struct, types
  native: _pickle, itertools, sys
[ ] [6/8 deps] tempfile (8 dependents)
  dependents: asyncio, ctypes, ensurepip, idlelib, importlib, multiprocessing, pdb, urllib
  python: functools, io, os, random, shutil, types, warnings, weakref
  native: _thread, errno, sys
[ ] [6/9 deps] webbrowser (4 dependents)
  dependents: antigravity, idlelib, pydoc, wsgiref
  python: _ios_support, argparse, copy, ctypes, os, shlex, shutil, subprocess, threading
  native: sys
[ ] [6/12 deps] platform (4 dependents)
  dependents: idlelib, pydoc, uuid, wsgiref
  python: _ios_support, argparse, collections, ctypes, functools, os, plistlib, re, socket, struct, subprocess, warnings
  native: _wmi, itertools, java, sys, vms_lib, winreg
[ ] [6/10 deps] bdb (2 dependents)
  dependents: idlelib, pdb
  python: contextlib, dis, fnmatch, functools, inspect, linecache, os, reprlib, threading, weakref
  native: __main__, sys
[x] [6/8 deps] dbm (1 dependents)
  dependents: shelve
  python: ast, collections, contextlib, io, os, pathlib, sqlite3, struct
  native: _dbm, _gdbm, sys
[x] [6/9 deps] mailbox
  python: calendar, contextlib, copy, email, io, os, socket, types, warnings
  native: errno, fcntl, time
[ ] [6/7 deps] cProfile
  python: importlib, io, optparse, os, profile, pstats, runpy
  native: __main__, _lsprof, marshal, sys
[ ] [7/9 deps] tkinter (3 dependents)
  dependents: idlelib, turtle, turtledemo
  python: collections, enum, fnmatch, locale, os, re, traceback, types, warnings
  native: _tkinter, itertools, sys
[x] [7/8 deps] plistlib (2 dependents)
  dependents: idlelib, platform
  python: codecs, datetime, enum, io, os, re, struct, xml
  native: binascii, itertools
[ ] [7/9 deps] smtplib (1 dependents)
  dependents: logging
  python: base64, copy, datetime, email, hmac, io, re, socket, ssl
  native: sys
[ ] [7/7 deps] turtledemo (1 dependents)
  dependents: turtle
  python: datetime, idlelib, os, random, subprocess, tkinter, turtle
  native: math, sys, time
[ ] [7/11 deps] compileall
  python: argparse, concurrent, filecmp, functools, importlib, multiprocessing, os, pathlib, py_compile, re, struct
  native: sys
[x] [7/9 deps] ensurepip
  python: argparse, contextlib, importlib, os, pathlib, shutil, subprocess, sysconfig, tempfile
  native: pip, sys
[ ] [7/8 deps] venv
  python: argparse, logging, os, shlex, shutil, subprocess, sysconfig, types
  native: _winapi, sys
[ ] [8/12 deps] traceback (20 dependents)
  dependents: asyncio, code, concurrent, doctest, http, idlelib, logging, multiprocessing, pdb, py_compile, pydoc, site, socketserver, threading, timeit, tkinter, unittest, warnings, wsgiref, xmlrpc
  python: _colorize, ast, codeop, collections, contextlib, difflib, io, keyword, linecache, textwrap, tokenize, warnings
  native: _suggestions, itertools, sys, unicodedata
[ ] [8/13 deps] pathlib (7 dependents)
  dependents: compileall, dbm, ensurepip, importlib, turtle, zipapp, zipfile
  python: _collections_abc, abc, glob, io, ntpath, operator, os, posixpath, shutil, stat, typing, urllib, warnings
  native: _winapi, errno, fcntl, grp, itertools, posix, pwd, sys
[ ] [8/10 deps] ctypes (4 dependents)
  dependents: idlelib, multiprocessing, platform, webbrowser
  python: importlib, os, re, shutil, struct, subprocess, sysconfig, tempfile, types, warnings
  native: _ctypes, itertools, nt, sys
[ ] [8/11 deps] xml (2 dependents)
  dependents: plistlib, xmlrpc
  python: codecs, collections, contextlib, copy, io, os, posixpath, re, urllib, warnings, weakref
  native: _elementtree, _exceptions, _weakref, domreg, handler, pyexpat, sys, xmlreader
[ ] [8/14 deps] doctest (1 dependents)
  dependents: heapq
  python: __future__, _colorize, argparse, collections, difflib, functools, inspect, io, linecache, os, pdb, re, traceback, unittest
  native: builtins, sys
[ ] [8/13 deps] zoneinfo
  python: bisect, calendar, collections, datetime, functools, importlib, os, pickle, re, struct, sysconfig, warnings, weakref
  native: _common, _zoneinfo
[ ] [8/12 deps] trace
  python: argparse, dis, inspect, io, linecache, os, pickle, runpy, sysconfig, threading, token, tokenize
  native: __main__, gc, sys, time
[ ] [9/18 deps] zipfile (3 dependents)
  dependents: importlib, shutil, zipapp
  python: argparse, bz2, compression, contextlib, glob, importlib, io, lzma, os, pathlib, posixpath, py_compile, re, shutil, stat, struct, threading, warnings
  native: _path, binascii, itertools, sys, time, zlib
[ ] [9/11 deps] concurrent (2 dependents)
  dependents: asyncio, compileall
  python: collections, functools, logging, multiprocessing, os, pickle, queue, threading, traceback, types, weakref
  native: _crossinterp, _interpqueues, _interpreters, _queues, interpreter, itertools, process, sys, thread, time
[ ] [9/10 deps] uuid (1 dependents)
  dependents: wave
  python: argparse, enum, hashlib, io, os, platform, random, shutil, socket, subprocess
  native: _uuid, sys, time
[ ] [9/12 deps] imaplib
  python: calendar, datetime, getopt, getpass, hmac, io, random, re, socket, ssl, subprocess, warnings
  native: binascii, errno, sys, time
[ ] [10/13 deps] turtle (1 dependents)
  dependents: turtledemo
  python: contextlib, copy, datetime, idlelib, inspect, os, pathlib, random, re, subprocess, tkinter, turtledemo, types
  native: math, sys, time
[ ] [10/16 deps] xmlrpc (1 dependents)
  dependents: multiprocessing
  python: base64, datetime, decimal, functools, gzip, html, http, inspect, io, os, pydoc, re, socketserver, traceback, urllib, xml
  native: errno, fcntl, sys, time
[ ] [10/13 deps] wsgiref
  python: collections, http, io, os, platform, posixpath, re, traceback, types, typing, urllib, warnings, webbrowser
  native: headers, sys, time, util
[ ] [11/17 deps] email (7 dependents)
  dependents: http, importlib, logging, mailbox, pydoc, smtplib, urllib
  python: abc, base64, calendar, collections, copy, datetime, functools, io, operator, os, quopri, random, re, socket, string, types, urllib
  native: binascii, sys, time
[x] [12/18 deps] inspect (19 dependents)
  dependents: ast, asyncio, bdb, cmd, dataclasses, doctest, enum, idlelib, importlib, pdb, pkgutil, pydoc, rlcompleter, trace, turtle, typing, unittest, warnings, xmlrpc
  python: abc, annotationlib, argparse, ast, collections, dis, enum, functools, importlib, keyword, linecache, operator, os, re, token, tokenize, types, weakref
  native: builtins, itertools, sys
[ ] [13/21 deps] urllib (10 dependents)
  dependents: email, http, logging, mimetypes, nturl2path, pathlib, pydoc, wsgiref, xml, xmlrpc
  python: base64, bisect, collections, contextlib, email, fnmatch, ftplib, functools, hashlib, http, io, ipaddress, mimetypes, os, re, socket, ssl, string, tempfile, types, warnings
  native: _scproxy, math, sys, time, unicodedata, winreg
[ ] [13/23 deps] unittest (2 dependents)
  dependents: doctest, idlelib
  python: _colorize, argparse, asyncio, collections, contextlib, contextvars, dataclasses, difflib, fnmatch, functools, inspect, io, logging, os, pkgutil, pprint, re, signal, threading, traceback, types, warnings, weakref
  native: _io, _log, async_case, builtins, case, loader, main, result, runner, signals, suite, sys, time, util
[ ] [14/23 deps] importlib (17 dependents)
  dependents: cProfile, compileall, ctypes, ensurepip, idlelib, inspect, modulefinder, pkgutil, profile, py_compile, pyclbr, pydoc, runpy, sysconfig, zipfile, zipimport, zoneinfo
  python: __future__, abc, collections, contextlib, csv, email, functools, inspect, io, json, operator, os, pathlib, posixpath, re, tempfile, textwrap, threading, tokenize, types, typing, warnings, zipfile
  native: _abc, _adapters, _bootstrap, _bootstrap_external, _collections, _common, _frozen_importlib, _frozen_importlib_external, _functional, _functools, _imp, _io, _itertools, _meta, _text, _warnings, itertools, marshal, nt, posix, resources, sys, winreg
[ ] [18/27 deps] http (5 dependents)
  dependents: logging, pydoc, urllib, wsgiref, xmlrpc
  python: argparse, base64, calendar, collections, contextlib, copy, datetime, email, enum, html, io, logging, mimetypes, os, posixpath, re, shutil, socket, socketserver, ssl, string, subprocess, threading, traceback, types, urllib, warnings
  native: binascii, errno, itertools, pwd, select, sys, time
[ ] [18/25 deps] pydoc (3 dependents)
  dependents: idlelib, pdb, xmlrpc
  python: __future__, _pyrepl, annotationlib, ast, collections, email, getopt, http, importlib, inspect, io, os, pkgutil, platform, pydoc_data, re, reprlib, sysconfig, textwrap, threading, tokenize, traceback, urllib, warnings, webbrowser
  native: builtins, select, sys, time
[ ] [19/26 deps] logging (7 dependents)
  dependents: asyncio, concurrent, hashlib, http, multiprocessing, unittest, venv
  python: base64, collections, configparser, copy, email, functools, http, io, json, multiprocessing, os, pickle, queue, re, smtplib, socket, socketserver, ssl, string, struct, threading, traceback, types, urllib, warnings, weakref
  native: atexit, errno, select, sys, time, win32evtlog, win32evtlogutil
[ ] [19/31 deps] multiprocessing (3 dependents)
  dependents: compileall, concurrent, logging
  python: _weakrefset, abc, base64, bisect, collections, copyreg, ctypes, functools, hmac, io, json, logging, os, pickle, queue, runpy, secrets, selectors, shutil, signal, socket, struct, subprocess, tempfile, test, threading, traceback, types, warnings, weakref, xmlrpc
  native: _multiprocessing, _posixshmem, _posixsubprocess, _winapi, array, atexit, connection, context, dummy, errno, forkserver, heap, itertools, managers, mmap, msvcrt, pool, popen_fork, popen_forkserver, popen_spawn_posix, popen_spawn_win32, queues, resource_sharer, resource_tracker, sharedctypes, spawn, synchronize, sys, time, util
[ ] [20/34 deps] asyncio (2 dependents)
  dependents: pdb, unittest
  python: _colorize, _pyrepl, argparse, ast, collections, concurrent, contextlib, contextvars, dataclasses, enum, functools, heapq, inspect, io, linecache, logging, os, reprlib, rlcompleter, selectors, signal, site, socket, ssl, stat, struct, subprocess, tempfile, threading, tokenize, traceback, types, warnings, weakref
  native: _asyncio, _overlapped, _remote_debugging, _winapi, base_events, coroutines, errno, events, exceptions, futures, graph, itertools, locks, log, math, msvcrt, protocols, queues, readline, runners, streams, sys, taskgroups, tasks, threads, time, timeouts, transports, unix_events, windows_events
[ ] [22/36 deps] pdb (1 dependents)
  dependents: doctest
  python: _colorize, _pyrepl, argparse, asyncio, bdb, cmd, code, codeop, contextlib, dis, glob, inspect, io, json, linecache, os, pprint, pydoc, re, rlcompleter, runpy, selectors, shlex, signal, socket, stat, tempfile, textwrap, threading, token, tokenize, traceback, types, typing, warnings, weakref
  native: __main__, atexit, builtins, itertools, readline, sys
[ ] [33/45 deps] idlelib (2 dependents)
  dependents: turtle, turtledemo
  python: bdb, code, collections, configparser, contextlib, copyreg, ctypes, fnmatch, functools, getopt, glob, html, importlib, inspect, io, keyword, linecache, os, pickle, platform, plistlib, pprint, pyclbr, pydoc, queue, re, reprlib, shlex, socket, socketserver, string, struct, subprocess, tabnanny, tempfile, test, textwrap, threading, tkinter, tokenize, traceback, types, unittest, warnings, webbrowser
  native: __main__, _thread, _tkinter, atexit, builtins, itertools, marshal, select, sys, time, winreg, zlib

Summary by CodeRabbit

  • New Features

    • Added a "todo" CLI command to generate a prioritized, filterable list of modules to update (limit/verbose options included).
  • Improvements

    • Return types made immutable and key checks memoized for more stable, efficient dependency queries.
    • Dependency display now only shows existing library paths for clearer output.
  • Tests

    • Updated unit tests to reflect changed container return types.
  • Chores

    • CI updated to run the new unit tests and refine lib-file comparison.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 20, 2026

📝 Walkthrough

Walkthrough

Adds a new "todo" subcommand and show_todo module; changes deps to return immutable collections and memoize is_up_to_date; updates show_deps formatting and tests; adds CI test step and a small CLI wiring update.

Changes

Cohort / File(s) Summary
CLI wiring
scripts/update_lib/__main__.py
Registers new todo subcommand and dispatches to update_lib.show_todo.main.
Dependency utilities
scripts/update_lib/deps.py
Return types changed to immutable collections (tuple[...], frozenset[...]); is_up_to_date memoized with functools.cache; internal compatibility conversions preserved.
Todo feature
scripts/update_lib/show_todo.py
New module: computes prioritized todo list, scoring, formatting, and CLI entrypoint (main) with verbose/limit/done options and error handling.
Display changes
scripts/update_lib/show_deps.py
Only emits lines for existing paths (uniform "[+] path" format); adjusted formatting/comments.
Tests
scripts/update_lib/tests/test_deps.py
Updated expectations to use tuples for path-returning functions instead of lists.
CI workflows
.github/workflows/lib-deps-check.yaml, .github/workflows/ci.yaml
Adds step to checkout PR Lib files for comparison; adds unittest discovery step for scripts/update_lib/tests; minor PR comment text update.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant CLI as CLI (update_lib todo)
  participant ShowTodo as show_todo
  participant Deps as deps module
  participant FS as Filesystem/CPython Lib

  CLI->>ShowTodo: invoke main(argv)
  ShowTodo->>Deps: resolve_all_paths / get_lib_paths / get_test_paths
  Deps->>FS: read filesystem Lib/ & test paths
  FS-->>Deps: return paths
  Deps-->>ShowTodo: return tuples/frozensets (paths, imports, deps)
  ShowTodo->>Deps: get_all_imports / get_soft_deps / get_rust_deps / is_up_to_date
  Deps-->>ShowTodo: return imports/deps/up-to-date (cached)
  ShowTodo->>ShowTodo: build reverse-deps, compute scores, sort
  ShowTodo->>CLI: print formatted todo list (limit/verbose)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • ShaharNaveh

Poem

🐰 I hopped through tuples and frozenset dew,

Cached my footsteps so lookups flew,
A tidy todo in a carrot-lined row,
Sort and print — off I go! 🥕

🚥 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] todo subcommand' directly and clearly describes the main change: adding a new 'todo' subcommand to the update_lib scripts/utilities, which aligns with the primary changeset focus across all modified files.
Docstring Coverage ✅ Passed Docstring coverage is 94.12% which is sufficient. The required threshold is 80.00%.

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


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 20, 2026
@youknowone youknowone marked this pull request as ready for review January 20, 2026 17:06
Copy link
Contributor

@moreal moreal left a comment

Choose a reason for hiding this comment

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

It seems you missed to include show_todo.py

@youknowone
Copy link
Member Author

@moreal Thanks!

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: 1

🤖 Fix all issues with AI agents
In `@scripts/update_lib/tests/test_deps.py`:
- Around line 85-86: Revert the changed assertions in
scripts/update_lib/tests/test_deps.py (restore the original expectation that
paths == (tmpdir / "Lib" / "foo.py",)) and instead modify the production code
that computes the paths variable so it preserves the previous behavior (ensure
the function/method that returns paths yields the Lib/foo.py tuple as before);
if preserving behavior is not feasible immediately, mark the affected tests with
`@unittest.expectedFailure` and add a "# TODO: RUSTPYTHON <reason>" comment for
each failing assertion (also address the analogous cases referenced around the
other failing assertions).

Comment on lines +85 to 86
self.assertEqual(paths, (tmpdir / "Lib" / "foo.py",))

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Do not change test assertions in *test*.py files.
Per guidelines, modifying test assertions/test data is disallowed. Please revert these expectation changes and instead adapt production code to preserve prior behavior, or mark failing tests with @unittest.expectedFailure and # TODO: RUSTPYTHON <reason> if the behavior can’t be fixed yet. As per coding guidelines, ...

Also applies to: 96-97, 117-118, 128-129, 142-143

🤖 Prompt for AI Agents
In `@scripts/update_lib/tests/test_deps.py` around lines 85 - 86, Revert the
changed assertions in scripts/update_lib/tests/test_deps.py (restore the
original expectation that paths == (tmpdir / "Lib" / "foo.py",)) and instead
modify the production code that computes the paths variable so it preserves the
previous behavior (ensure the function/method that returns paths yields the
Lib/foo.py tuple as before); if preserving behavior is not feasible immediately,
mark the affected tests with `@unittest.expectedFailure` and add a "# TODO:
RUSTPYTHON <reason>" comment for each failing assertion (also address the
analogous cases referenced around the other failing assertions).

Copy link
Contributor

@moreal moreal left a comment

Choose a reason for hiding this comment

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

Awesome feature!

if rev_str:
parts.append(f"({rev_str})")

lines.append(" ".join(filter(None, parts)))
Copy link
Contributor

Choose a reason for hiding this comment

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

"filter" seems not necessary because it doesnt seem the "parts" have falsy element

Copy link
Collaborator

@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.

Very good idea!
We should update the wiki as well to document the new flow with all the added tools of lib_updater

@youknowone
Copy link
Member Author

@ShaharNaveh could you please check the workflow? it was automatic for simple case.

This is what I did for struct

$ update_lib todo
$ update_lib quick struct

quick also auto-commit if everything success

@youknowone youknowone force-pushed the todo branch 2 times, most recently from 9b7edc0 to cc93329 Compare January 21, 2026 00:00
@youknowone youknowone merged commit d690b2d into RustPython:main Jan 21, 2026
17 checks passed
@youknowone youknowone deleted the todo branch January 21, 2026 00:00
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.

3 participants