Files
Miss Islington (bot) 2dd5d4e1ec [3.15] gh-150579: use lazy imports for concurrent.futures (GH-150585) (#152975)
gh-150579: use lazy imports for concurrent.futures (GH-150585)

This module has a manual lazy import hack using `__getattr__`. Now that lazy imports exist and cannot be disabled, this could use lazy imports instead.

Key differences: this will now show up in sys.lazy_modules when accessed. Error messages should be a bit better without the wrapper `__getattr__` involved.  That's the only differences I can think of.
(cherry picked from commit 423ae0ff36)

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
2026-07-03 20:20:49 -07:00

52 lines
1.4 KiB
Python

# Copyright 2009 Brian Quinlan. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.
"""Execute computations asynchronously using threads or processes."""
__author__ = 'Brian Quinlan (brian@sweetapp.com)'
from concurrent.futures._base import (FIRST_COMPLETED,
FIRST_EXCEPTION,
ALL_COMPLETED,
CancelledError,
TimeoutError,
InvalidStateError,
BrokenExecutor,
Future,
Executor,
wait,
as_completed)
lazy from .process import ProcessPoolExecutor
lazy from .thread import ThreadPoolExecutor
__all__ = [
'FIRST_COMPLETED',
'FIRST_EXCEPTION',
'ALL_COMPLETED',
'CancelledError',
'TimeoutError',
'InvalidStateError',
'BrokenExecutor',
'Future',
'Executor',
'wait',
'as_completed',
'ProcessPoolExecutor',
'ThreadPoolExecutor',
]
try:
import _interpreters
except ImportError:
_interpreters = None
if _interpreters:
lazy from .interpreter import InterpreterPoolExecutor # noqa: F401
__all__.append('InterpreterPoolExecutor')
def __dir__():
return __all__ + ['__author__', '__doc__']