GeezerVison is showing github.com — Upgrade hmac to Python 3.14.2 by Copilot · Pull Request #6863 · RustPython/RustPython
Conversation
Copilot
AI
commented
Jan 24, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
Upgrades hmac module and test suite from Python 3.14.2 as part of the ongoing stdlib modernization effort.
Changes
-
Lib/hmac.py: Updated to support three HMAC implementations (OpenSSL, HACL*, pure Python) with automatic fallback logic. Added _get_digest_constructor() helper and _compute_digest_fallback() for overflow handling.
-
Lib/test/test_hmac.py: Comprehensive rewrite using mixin-based architecture to test all three implementations. Increased test coverage from ~150 to 142 tests with better organization.
-
Test markers: 27 tests marked as @unittest.expectedFailure due to missing RustPython _hashlib features:
_hashlib.HMAC class
_hashlib.hmac_digest() function
- Full
hmac_new() implementation (currently raises UnsupportedDigestmodError)
Test Results
142 tests total: 68 passed, 48 skipped (platform/module dependencies), 26 expected failures.
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)
- [no deps] struct (17 dependents)
- [no deps] stat (14 dependents)
- [no deps] operator (13 dependents)
- [no deps] linecache (9 dependents)
- [no deps] keyword (8 dependents)
- [no deps] codecs (8 dependents)
- [no deps] future (6 dependents)
- [no deps] copyreg (6 dependents)
- [no deps] reprlib (6 dependents)
- [no deps] bisect (5 dependents)
- [no deps] token (5 dependents)
- [no deps] string (5 dependents)
- [no deps] heapq (4 dependents)
- [no deps] hashlib (2 dependents)
- [no deps] hmac (2 dependents)
- [no deps] quopri (2 dependents)
- [no deps] _sitebuiltins (2 dependents)
- [no deps] _compat_pickle (1 dependents)
- [no deps] _opcode_metadata (1 dependents)
- [no deps] mimetypes (1 dependents)
- [no deps] cmd (1 dependents)
- [no deps] stringprep (1 dependents)
- [no deps] tty (1 dependents)
- [no deps] hello
- [no deps] phello
- [no deps] colorsys
- [no deps] this
- [no deps] _ios_support
- [no deps] pydoc_data
- [no deps] timeit
- [no deps] zipimport
- [0/3 deps] os (76 dependents)
- [0/4 deps] collections (32 dependents)
- test_collections (3 TODO)
- [0/1 deps] warnings (23 dependents)
- [0/1 deps] enum (17 dependents)
- [0/1 deps] datetime (13 dependents)
- [0/1 deps] _collections_abc (9 dependents)
- [0/1 deps] base64 (8 dependents)
- [0/1 deps] textwrap (6 dependents)
- [0/1 deps] _weakrefset (4 dependents)
- [0/2 deps] codeop (3 dependents)
- [0/1 deps] numbers (3 dependents)
- [0/1 deps] contextvars (3 dependents)
- [0/3 deps] decimal (2 dependents)
- [0/1 deps] _markupbase (1 dependents)
- [0/1 deps] ipaddress (1 dependents)
- [0/4 deps] fractions (1 dependents)
- [0/4 deps] rlcompleter (1 dependents)
- test_rlcompleter (1 TODO)
- [0/1 deps] graphlib
- [0/1 deps] nturl2path
- [0/2 deps] sre_compile
- [0/2 deps] sre_constants
- [0/2 deps] sre_parse
- [1/3 deps] re (45 dependents)
- [1/5 deps] functools (33 dependents)
- [1/1 deps] abc (15 dependents)
- [1/2 deps] weakref (14 dependents)
- [1/3 deps] copy (9 dependents)
- [1/2 deps] ast (7 dependents)
- [1/1 deps] signal (6 dependents)
- [1/3 deps] posixpath (6 dependents)
- [1/4 deps] random (6 dependents)
- [1/6 deps] typing (6 dependents)
- [1/8 deps] dataclasses (5 dependents)
- test_dataclasses (10 TODO)
- [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/3 deps] locale (3 dependents)
- [1/3 deps] difflib (2 dependents)
- [1/2 deps] genericpath (2 dependents)
- test_genericpath (1 TODO)
- [1/2 deps] html (2 dependents)
- [1/3 deps] site (2 dependents)
- [1/3 deps] filecmp (1 dependents)
- [1/2 deps] ntpath (1 dependents)
- [1/1 deps] opcode (1 dependents)
- [1/1 deps] pyclbr (1 dependents)
- test_pyclbr (3 TODO)
-...
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Copilot
AI
changed the title
[WIP] Upgrade Python libraries and test from Python 3.14
Upgrade hmac to Python 3.14.2
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.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
📦 Library Dependencies
The following Lib/ modules were modified. Here are their dependencies:
[x] lib: cpython/Lib/hmac.py
[ ] test: cpython/Lib/test/test_hmac.py (TODO: 27)
dependencies:
dependent tests: (4 tests)
- hmac: test_hmac test_smtplib
- secrets: test_secrets
- smtplib: test_smtpnet
Legend:
[+] path exists in CPython
[x] up-to-date, [ ] outdated
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Reviewers
+1 more reviewer
moreal
moreal approved these changes
Reviewers whose approvals may not affect merge requirements
Uh oh!
There was an error while loading. Please reload this page.
Milestone
No milestone
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|