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

Fix typo in multiprocessing.pool.AsyncResult.successful doc. #17932

Open
wants to merge 1 commit into
base: master
from

Conversation

@awecx
Copy link
Contributor

awecx commented Jan 9, 2020

Since 3.7 successful raises a ValueError as explained in the next text block from the documentation:

Changed in version 3.7: If the result is not ready, ValueError is raised instead of AssertionError.

No issue associated with this PR.
Should be backported in 3.7 and 3.8.

@aeros
aeros approved these changes Jan 9, 2020
Copy link
Member

aeros left a comment

Thanks for the PR @awecx.

I confirmed from the source code that AsyncResult.successful() does indeed raise a ValueError instead of an AssertionError:

def successful(self):
if not self.ready():
raise ValueError("{0!r} not ready".format(self))
return self._success

LGTM. This is also present in the 3.8 and 3.7 branches, so this PR should be backported to those versions as well.

@aeros

This comment has been minimized.

Copy link
Member

aeros commented Jan 9, 2020

Added @pitrou as a reviewer for the PR, since he's an active expert for the multiprocessing module.

@awecx

This comment has been minimized.

Copy link
Contributor Author

awecx commented Jan 10, 2020

Thanks for the PR @awecx.

I confirmed from the source code that AsyncResult.successful() does indeed raise a ValueError instead of an AssertionError:

def successful(self):
if not self.ready():
raise ValueError("{0!r} not ready".format(self))
return self._success

LGTM. This is also present in the 3.8 and 3.7 branches, so this PR should be backported to those versions as well.

Thanks @aeros for the clarification. Indeed I should have proven the typo claim more clearly:
@pitrou if double check is necessary, you can run the following snippet:

from multiprocessing import Pool
from time import sleep

with Pool(processes=1) as pool:
    result = pool.apply_async(sleep, (10000,))
    result.successful()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.