Buckets:
MisterAI/LocalAI_Demo_backends / cpu-diffusers.upgrade-tmp /python /lib /python3.10 /asyncio /base_futures.py
| __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 | |
Xet Storage Details
- Size:
- 2.57 kB
- Xet hash:
- 4385d1965f2f54fc5b44768d607e1a61f1a52c656bddc1bdff39b9caf86f7b3d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.