Skip to content
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

bpo-42406: Fix whichmodule() with multiprocessing #23403

Merged
merged 2 commits into from
Nov 29, 2020

Conversation

renatolfc
Copy link
Contributor

@renatolfc renatolfc commented Nov 19, 2020

This fixes the behavior of the pickle.whichmodule() function when multiprocessing is imported before the pickle module.

Prior to this patch, the following incorrect output would be found when trying to determine the module of the (for example) gdtrix function:

>>> import multiprocessing
>>> import pickle
>>> from scipy.special import gdtrix
>>> pickle.whichmodule(gdtrix, gdtrix.__name__)
'__mp_main__'

With the patch, now we get correct behavior:

>>> import multiprocessing
>>> import pickle
>>> from scipy.special import gdtrix
>>> pickle.whichmodule(gdtrix, gdtrix.__name__)
'scipy.special._ufuncs'

This also fixes uqfoundation/dill#392.

Signed-off-by: Renato L. de F. Cunha renatoc@br.ibm.com

https://bugs.python.org/issue42406

Automerge-Triggered-By: GH:gpshead

Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com>
@the-knights-who-say-ni
Copy link

Hello, and thanks for your contribution!

I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA).

CLA Missing

Our records indicate the following people have not signed the CLA:

@renatolfc

For legal reasons we need all the people listed to sign the CLA before we can look at your contribution. Please follow the steps outlined in the CPython devguide to rectify this issue.

If you have recently signed the CLA, please wait at least one business day
before our records are updated.

You can check yourself to see if the CLA has been received.

Thanks again for the contribution, we look forward to reviewing it!

Copy link
Member

@gpshead gpshead left a comment

Choose a reason for hiding this comment

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

i made one minor edit to mention bpo-42406 in a comment and prefer () over .

@miss-islington
Copy link
Contributor

@renatolfc: Status check is done, and it's a success ❌ .

@gpshead gpshead closed this Nov 28, 2020
@gpshead gpshead reopened this Nov 28, 2020
@miss-islington
Copy link
Contributor

@renatolfc: Status check is done, and it's a success ❌ .

2 similar comments
@miss-islington
Copy link
Contributor

@renatolfc: Status check is done, and it's a success ❌ .

@miss-islington
Copy link
Contributor

@renatolfc: Status check is done, and it's a success ❌ .

@gpshead gpshead merged commit 8668431 into python:master Nov 29, 2020
@miss-islington
Copy link
Contributor

Thanks @renatolfc for the PR, and @gpshead for merging it 🌮🎉.. I'm working now to backport this PR to: 3.8, 3.9.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 29, 2020
* bpo-42406: Fix whichmodule() with multiprocessing

Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
(cherry picked from commit 8668431)

Co-authored-by: Renato Cunha <renatocunha@acm.org>
@bedevere-bot bedevere-bot removed the needs backport to 3.9 only security fixes label Nov 29, 2020
@bedevere-bot
Copy link

GH-23560 is a backport of this pull request to the 3.9 branch.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 29, 2020
* bpo-42406: Fix whichmodule() with multiprocessing

Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
(cherry picked from commit 8668431)

Co-authored-by: Renato Cunha <renatocunha@acm.org>
@bedevere-bot
Copy link

GH-23561 is a backport of this pull request to the 3.8 branch.

miss-islington added a commit that referenced this pull request Nov 29, 2020
* bpo-42406: Fix whichmodule() with multiprocessing

Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
(cherry picked from commit 8668431)

Co-authored-by: Renato Cunha <renatocunha@acm.org>
miss-islington added a commit that referenced this pull request Nov 29, 2020
* bpo-42406: Fix whichmodule() with multiprocessing

Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
(cherry picked from commit 8668431)

Co-authored-by: Renato Cunha <renatocunha@acm.org>
@renatolfc renatolfc deleted the fix-issue-42406 branch November 29, 2020 19:13
adorilson pushed a commit to adorilson/cpython that referenced this pull request Mar 13, 2021
* bpo-42406: Fix whichmodule() with multiprocessing

Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
faucct added a commit to faucct/cpython that referenced this pull request Sep 21, 2021
li-dan pushed a commit to li-dan/cpython that referenced this pull request Jun 6, 2024
Importing multiprocessing adds an alias to __main__ named __mp_main__.
In python#23403, the Python version of whichmodule() was fixed to exclude
__mp_main__. Apply the same fix to the C version of the function.
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.

Serialization of ufuncs breaks depending on import order
5 participants