Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 24, 2026

Updates hashlib module and tests to Python 3.14.2 compatibility.

Changes

  • Updated Lib/hashlib.py and Lib/test/test_hashlib.py from CPython v3.14.2 using update_lib tooling, preserving 10 RustPython TODO markers

  • Created _sha2 module (crates/stdlib/src/sha2.rs): Python 3.14 consolidated _sha256 and _sha512 into a single _sha2 module providing all SHA-2 family functions (sha224, sha256, sha384, sha512)

  • Added openssl_md_meth_names attribute to _hashlib module: Returns frozenset of available hash algorithms, required by Python 3.14's hashlib.py to populate algorithms_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)
      -...

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 2 commits January 24, 2026 08:33
Co-authored-by: moreal <26626194+moreal@users.noreply.github.com>
…4 compatibility

Co-authored-by: moreal <26626194+moreal@users.noreply.github.com>
Copilot AI changed the title [WIP] Upgrade Python libraries and test from Python 3.14 Update hashlib to Python 3.14.2 Jan 24, 2026
Copilot AI requested a review from moreal January 24, 2026 08:48
@github-actions
Copy link
Contributor

Code has been automatically formatted

The code in this PR has been formatted using:

  • cargo fmt --all
    Please pull the latest changes before pushing again:
git pull origin copilot/upgrade-python-libraries

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 24, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

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


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

@github-actions
Copy link
Contributor

📦 Library Dependencies

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

[+] lib: cpython/Lib/hashlib.py
[+] test: cpython/Lib/test/test_hashlib.py

dependencies:

  • hashlib

dependent tests: (16 tests)

  • hashlib: test_hashlib test_hmac test_smtplib test_tarfile test_unicodedata test_urllib2_localnet
    • hmac:
      • secrets: test_secrets
      • smtplib: test_smtpnet
    • urllib.request: test_http_cookiejar test_pathlib test_site test_ssl test_urllib test_urllib2 test_urllib2net test_urllibnet

Legend:

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

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