############################################################################### | |
# Modification of concurrent.futures.Future | |
# | |
# author: Thomas Moreau and Olivier Grisel | |
# | |
# adapted from concurrent/futures/_base.py (17/02/2017) | |
# * Do not use yield from | |
# * Use old super syntax | |
# | |
# Copyright 2009 Brian Quinlan. All Rights Reserved. | |
# Licensed to PSF under a Contributor Agreement. | |
from concurrent.futures import Future as _BaseFuture | |
from concurrent.futures._base import LOGGER | |
# To make loky._base.Future instances awaitable by concurrent.futures.wait, | |
# derive our custom Future class from _BaseFuture. _invoke_callback is the only | |
# modification made to this class in loky. | |
# TODO investigate why using `concurrent.futures.Future` directly does not | |
# always work in our test suite. | |
class Future(_BaseFuture): | |
def _invoke_callbacks(self): | |
for callback in self._done_callbacks: | |
try: | |
callback(self) | |
except BaseException: | |
LOGGER.exception(f"exception calling callback for {self!r}") | |