Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
base_futures.py68 linesDownload Raw Back to asyncio
1__all__ = ()2 3import reprlib4 5from . import format_helpers6 7# States for Future.8_PENDING = 'PENDING'9_CANCELLED = 'CANCELLED'10_FINISHED = 'FINISHED'11 12 13def isfuture(obj):14    """Check for a Future.15 16    This returns True when obj is a Future instance or is advertising17    itself as duck-type compatible by setting _asyncio_future_blocking.18    See comment in Future for more details.19    """20    return (hasattr(obj.__class__, '_asyncio_future_blocking') and21            obj._asyncio_future_blocking is not None)22 23 24def _format_callbacks(cb):25    """helper function for Future.__repr__"""26    size = len(cb)27    if not size:28        cb = ''29 30    def format_cb(callback):31        return format_helpers._format_callback_source(callback, ())32 33    if size == 1:34        cb = format_cb(cb[0][0])35    elif size == 2:36        cb = '{}, {}'.format(format_cb(cb[0][0]), format_cb(cb[1][0]))37    elif size > 2:38        cb = '{}, <{} more>, {}'.format(format_cb(cb[0][0]),39                                        size - 2,40                                        format_cb(cb[-1][0]))41    return f'cb=[{cb}]'42 43 44def _future_repr_info(future):45    # (Future) -> str46    """helper function for Future.__repr__"""47    info = [future._state.lower()]48    if future._state == _FINISHED:49        if future._exception is not None:50            info.append(f'exception={future._exception!r}')51        else:52            # use reprlib to limit the length of the output, especially53            # for very long strings54            result = reprlib.repr(future._result)55            info.append(f'result={result}')56    if future._callbacks:57        info.append(_format_callbacks(future._callbacks))58    if future._source_traceback:59        frame = future._source_traceback[-1]60        info.append(f'created at {frame[0]}:{frame[1]}')61    return info62 63 64@reprlib.recursive_repr()65def _future_repr(future):66    info = ' '.join(_future_repr_info(future))67    return f'<{future.__class__.__name__} {info}>'68 
codekingpro/portable-devtools · Team Ai