/usr/lib64/python3.9/asyncio
NameSizeModeActions
__pycache__/-0755rm
base_events.py741920644editdlrm
base_futures.py25740644editdlrm
base_subprocess.py88430644editdlrm
base_tasks.py24670644editdlrm
constants.py8880644editdlrm
coroutines.py87970644editdlrm
events.py264510644editdlrm
exceptions.py16330644editdlrm
format_helpers.py24040644editdlrm
futures.py140420644editdlrm
locks.py151810644editdlrm
log.py1240644editdlrm
proactor_events.py321460644editdlrm
protocols.py69570644editdlrm
queues.py83050644editdlrm
runners.py21250644editdlrm
selector_events.py395000644editdlrm
sslproto.py274590644editdlrm
staggered.py59920644editdlrm
streams.py266560644editdlrm
subprocess.py80700644editdlrm
tasks.py344190644editdlrm
threads.py7900644editdlrm
transports.py107240644editdlrm
trsock.py58760644editdlrm
unix_events.py517540644editdlrm
windows_events.py330540644editdlrm
windows_utils.py50600644editdlrm
__init__.py12790644editdlrm
__main__.py33790644editdlrm
Edit: /usr/lib64/python3.9/asyncio/base_futures.py (2574B)
__all__ = () import reprlib from _thread import get_ident from . import format_helpers # States for Future. _PENDING = 'PENDING' _CANCELLED = 'CANCELLED' _FINISHED = 'FINISHED' def isfuture(obj): """Check for a Future. This returns True when obj is a Future instance or is advertising itself as duck-type compatible by setting _asyncio_future_blocking. See comment in Future for more details. """ return (hasattr(obj.__class__, '_asyncio_future_blocking') and obj._asyncio_future_blocking is not None) def _format_callbacks(cb): """helper function for Future.__repr__""" size = len(cb) if not size: cb = '' def format_cb(callback): return format_helpers._format_callback_source(callback, ()) if size == 1: cb = format_cb(cb[0][0]) elif size == 2: cb = '{}, {}'.format(format_cb(cb[0][0]), format_cb(cb[1][0])) elif size > 2: cb = '{}, <{} more>, {}'.format(format_cb(cb[0][0]), size - 2, format_cb(cb[-1][0])) return f'cb=[{cb}]' # bpo-42183: _repr_running is needed for repr protection # when a Future or Task result contains itself directly or indirectly. # The logic is borrowed from @reprlib.recursive_repr decorator. # Unfortunately, the direct decorator usage is impossible because of # AttributeError: '_asyncio.Task' object has no attribute '__module__' error. # # After fixing this thing we can return to the decorator based approach. _repr_running = set() def _future_repr_info(future): # (Future) -> str """helper function for Future.__repr__""" info = [future._state.lower()] if future._state == _FINISHED: if future._exception is not None: info.append(f'exception={future._exception!r}') else: key = id(future), get_ident() if key in _repr_running: result = '...' else: _repr_running.add(key) try: # use reprlib to limit the length of the output, especially # for very long strings result = reprlib.repr(future._result) finally: _repr_running.discard(key) info.append(f'result={result}') if future._callbacks: info.append(_format_callbacks(future._callbacks)) if future._source_traceback: frame = future._source_traceback[-1] info.append(f'created at {frame[0]}:{frame[1]}') return info