Skip to content

bpo-1635741: Port hashlib modules to multiphase init (PEP 489) #21818

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Sep 6, 2020

Conversation

koubaa
Copy link
Contributor

@koubaa koubaa commented Aug 10, 2020

@koubaa koubaa requested a review from tiran as a code owner August 10, 2020 21:12
@koubaa koubaa changed the title Bpo 1635741 hashes bpo-1635741: Port hashlib modules to multiphase init (PEP 489) Aug 10, 2020
@tiran tiran self-assigned this Aug 11, 2020
@koubaa
Copy link
Contributor Author

koubaa commented Aug 12, 2020

@shihai1991 @vstinner @corona10 FYI. The macOS test failure looks to be due to the following error which seems unrelated to my change:

module 'test.support' has no attribute 'EnvironmentVarGuard'

@shihai1991
Copy link
Member

@shihai1991 @vstinner @corona10 FYI. The macOS test failure looks to be due to the following error which seems unrelated to my change:

module 'test.support' has no attribute 'EnvironmentVarGuard'

Hm, this failure have no relation with your PR. It's weird. Some failed test cases have updated: https://github.com/python/cpython/blob/master/Lib/test/test_selectors.py#L540

@shihai1991
Copy link
Member

The failed test cases have been fixed in 490c542
Can you do some git rebase operation? MAYBE this operation can solve your probleam.

@koubaa koubaa force-pushed the bpo-1635741-hashes branch from 28c3f7b to 8491100 Compare August 12, 2020 23:55
Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

This PR is a little bit too large. Would you mind to restrict it to blake2 which is already complex enough?

Once this PR is merged, you can write a PR for sha3 which is complex. Then we can finish with remaining modules like md5 and sha1. Or publish all PR are once.

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@koubaa
Copy link
Contributor Author

koubaa commented Aug 13, 2020

@vstinner that's not a problem - I put each file in its own commit so I can easily submit separate PRs. I'll submit one for sha3, one for blake2, and one with the remaining ones. After breaking up and creating PRs for each I'll address your comments

@koubaa koubaa force-pushed the bpo-1635741-hashes branch from 5ddff05 to fddf3ce Compare August 13, 2020 12:22
@koubaa
Copy link
Contributor Author

koubaa commented Aug 13, 2020

@vstinner

Thanks for the review!

@koubaa
Copy link
Contributor Author

koubaa commented Aug 13, 2020

@vstinner I'm going on vacation so I'll come back to address you comment next week.

@koubaa koubaa force-pushed the bpo-1635741-hashes branch from fddf3ce to 617660d Compare August 21, 2020 23:43
@koubaa
Copy link
Contributor Author

koubaa commented Aug 22, 2020

The MacOS/Ubuntu CI has these test failures:

3 tests failed:
test_hashlib test_random test_statistics

Running locally (windows) those tests pass:

./PCBuild/amd64/python.exe -m test test_statistics test_hashlib test_random
0:00:00 Run tests sequentially
0:00:00 [1/3] test_statistics
0:00:08 load avg: 0.00 [2/3] test_hashlib
0:00:09 load avg: 0.00 [3/3] test_random
== Tests result: SUCCESS ==

I rebased on the latest master so I'm not sure what could be causing it.

**** EDIT ****
This was due to a use-after free which is now fixed.

@koubaa koubaa force-pushed the bpo-1635741-hashes branch from 02ffcf6 to 4bcb57f Compare August 31, 2020 21:15
Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

LGTM. Thanks for the multiple updates. These PR wasn't easy!


if (Py_IS_TYPE((PyObject*)self, &SHA512type)) {
if ( (newobj = newSHA512object())==NULL)
if (Py_IS_TYPE((PyObject*)self, st->sha512_type)) {
Copy link
Member

Choose a reason for hiding this comment

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

Without defining_class, this test was wrong. So thanks for using defining_class :-)

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

LGTM, but please fix the NEWS entry.

@vstinner vstinner merged commit 63f102f into python:master Sep 6, 2020
@vstinner
Copy link
Member

vstinner commented Sep 6, 2020

Merged, thanks.

shihai1991 added a commit to shihai1991/cpython that referenced this pull request Sep 10, 2020
* origin/master: (1373 commits)
  bpo-1635741: Port mashal module to multi-phase init (python#22149)
  bpo-1635741: Port _string module to multi-phase init (pythonGH-22148)
  bpo-1635741: Convert _sha256 types to heap types (pythonGH-22134)
  bpo-1635741: Port the termios to multi-phase init (PEP 489) (pythonGH-22139)
  bpo-41732: add iterator to memoryview (pythonGH-22119)
  bpo-40744: Drop support for SQLite pre 3.7.3 (pythonGH-20909)
  bpo-41316: Make tarfile follow specs for FNAME (pythonGH-21511)
  bpo-41720: Add "return NotImplemented" in turtle.Vec2D.__rmul__(). (pythonGH-22092)
  bpo-1635741 port _curses_panel to multi-phase init (PEP 489) (pythonGH-21986)
  bpo-1635741: Port _overlapped module to multi-phase init (pythonGH-22051)
  bpo-1635741: Port _opcode module to multi-phase init (PEP 489) (pythonGH-22050)
  bpo-1635741 port zlib module to multi-phase init (pythonGH-21995)
  [doc] Add link to Generic in typing (pythonGH-22125)
  bpo-41513: Expand comments and add references for a better understanding (pythonGH-22123)
  bpo-1635741: Port _sha1, _sha512, _md5 to multiphase init (pythonGH-21818)
  closes bpo-41723: Fix an error in the py_compile documentation. (pythonGH-22110)
  [doc] Fix padding in some typing definitions (pythonGH-22114)
  Fix documented Python version for venv --upgrade-deps (pythonGH-22113)
  bpo-40318: Migrate to SQLite3 trace v2 API (pythonGH-19581)
  bpo-41687: Fix sendfile implementation to work with Solaris (python#22040)
  ...
@koubaa koubaa deleted the bpo-1635741-hashes branch September 11, 2020 02:24
xzy3 pushed a commit to xzy3/cpython that referenced this pull request Oct 18, 2020
…1818)

Port the _sha1, _sha512, and _md5 extension modules
to multi-phase initialization API (PEP 489).
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.

6 participants