Update hashlib to Python 3.14.2 by Copilot · Pull Request #6862 · RustPython/RustPython
Updates hashlib module and tests to Python 3.14.2 compatibility.
Changes
-
Updated
Lib/hashlib.pyandLib/test/test_hashlib.pyfrom CPython v3.14.2 usingupdate_libtooling, preserving 10 RustPython TODO markers -
Created
_sha2module (crates/stdlib/src/sha2.rs): Python 3.14 consolidated_sha256and_sha512into a single_sha2module providing all SHA-2 family functions (sha224, sha256, sha384, sha512) -
Added
openssl_md_meth_namesattribute to_hashlibmodule: Returns frozenset of available hash algorithms, required by Python 3.14'shashlib.pyto populatealgorithms_available
Test Status
82 tests run: 8 expected failures (matching TODO markers), 2 TODO tests skipped (urlfetch disabled), 15 platform/resource skips.
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. As a note, the current latest Python version is v3.14.2.
Previous versions' issues as reference
Details
2026-01-24
$ python3 scripts/update_lib todo --done
- [no deps] types (40 dependents)
- test_types (10 TODO)
- [no deps] struct (17 dependents)
- test_struct (4 TODO)
- [no deps] stat (14 dependents)
- test_stat
- [no deps] operator (13 dependents)
- test_operator (3 TODO)
- [no deps] linecache (9 dependents)
- test_linecache
- [no deps] keyword (8 dependents)
- test_keyword
- [no deps] codecs (8 dependents)
- test_codecs (98 TODO)
- [no deps] future (6 dependents)
- [no deps] copyreg (6 dependents)
- test_copyreg
- [no deps] reprlib (6 dependents)
- test_reprlib (4 TODO)
- [no deps] bisect (5 dependents)
- test_bisect
- [no deps] token (5 dependents)
- [no deps] string (5 dependents)
- test_string
- [no deps] heapq (4 dependents)
- test_heapq
- [no deps] hashlib (2 dependents)
- test_hashlib (10 TODO)
- [no deps] hmac (2 dependents)
- test_hmac (18 TODO)
- [no deps] quopri (2 dependents)
- test_quopri
- [no deps] _sitebuiltins (2 dependents)
- [no deps] _compat_pickle (1 dependents)
- [no deps] _opcode_metadata (1 dependents)
- [no deps] mimetypes (1 dependents)
- test_mimetypes
- [no deps] cmd (1 dependents)
- test_cmd
- [no deps] stringprep (1 dependents)
- test_stringprep
- [no deps] tty (1 dependents)
- test_tty (2 TODO)
- [no deps] hello
- [no deps] phello
- [no deps] colorsys
- test_colorsys
- [no deps] this
- [no deps] _ios_support
- [no deps] pydoc_data
- [no deps] timeit
- test_timeit
- [no deps] zipimport
- test_zipimport (2 TODO)
- [0/3 deps] os (76 dependents)
- test_os (18 TODO)
- [0/4 deps] collections (32 dependents)
- test_collections (3 TODO)
- [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
- [0/1 deps] _collections_abc (9 dependents)
- [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/1 deps] numbers (3 dependents)
- [0/1 deps] contextvars (3 dependents)
- [0/3 deps] decimal (2 dependents)
- test_decimal (2 TODO)
- [0/1 deps] _markupbase (1 dependents)
- [0/1 deps] ipaddress (1 dependents)
- test_ipaddress
- [0/4 deps] fractions (1 dependents)
- test_fractions (1 TODO)
- [0/4 deps] rlcompleter (1 dependents)
- test_rlcompleter (1 TODO)
- [0/1 deps] graphlib
- test_graphlib
- [0/1 deps] nturl2path
- test_nturl2path
- [0/2 deps] sre_compile
- [0/2 deps] sre_constants
- [0/2 deps] sre_parse
- [1/3 deps] re (45 dependents)
- test_re (19 TODO)
- [1/5 deps] functools (33 dependents)
- test_functools (11 TODO)
- [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)
- [1/1 deps] signal (6 dependents)
- test_signal (3 TODO)
- [1/3 deps] posixpath (6 dependents)
- test_posixpath (4 TODO)
- [1/4 deps] random (6 dependents)
- test_random
- [1/6 deps] typing (6 dependents)
- test_typing (21 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] selectors (4 dependents)
- test_selectors
- [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
- [1/2 deps] genericpath (2 dependents)
- test_genericpath (1 TODO)
- [1/2 deps] html (2 dependents)
- test_html
- [1/3 deps] site (2 dependents)
- test_site (5 TODO)
- [1/3 deps] filecmp (1 dependents)
- test_filecmp
- [1/2 deps] ntpath (1 dependents)
- test_ntpath
- [1/1 deps] opcode (1 dependents)
- [1/1 deps] pyclbr (1 dependents)
- test_pyclbr (3 TODO)
-...
- test_pyclbr (3 TODO)
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.