Server: appserver-7f0f8755-nginx-15961cad18524ec5a9db05f2a6a7e440
Current directory: /usr/lib/python3.11/asyncio
Software: nginx/1.27.5
Shell Command
Create a new file
Upload file
File: coroutines.py
__all__ = 'iscoroutinefunction', 'iscoroutine' import collections.abc import inspect import os import sys import traceback import types def _is_debug_mode(): # See: https://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode. return sys.flags.dev_mode or (not sys.flags.ignore_environment and bool(os.environ.get('PYTHONASYNCIODEBUG'))) # A marker for iscoroutinefunction. _is_coroutine = object() def iscoroutinefunction(func): """Return True if func is a decorated coroutine function.""" return (inspect.iscoroutinefunction(func) or getattr(func, '_is_coroutine', None) is _is_coroutine) # Prioritize native coroutine check to speed-up # asyncio.iscoroutine. _COROUTINE_TYPES = (types.CoroutineType, types.GeneratorType, collections.abc.Coroutine) _iscoroutine_typecache = set() def iscoroutine(obj): """Return True if obj is a coroutine object.""" if type(obj) in _iscoroutine_typecache: return True if isinstance(obj, _COROUTINE_TYPES): # Just in case we don't want to cache more than 100 # positive types. That shouldn't ever happen, unless # someone stressing the system on purpose. if len(_iscoroutine_typecache) < 100: _iscoroutine_typecache.add(type(obj)) return True else: return False def _format_coroutine(coro): assert iscoroutine(coro) def get_name(coro): # Coroutines compiled with Cython sometimes don't have # proper __qualname__ or __name__. While that is a bug # in Cython, asyncio shouldn't crash with an AttributeError # in its __repr__ functions. if hasattr(coro, '__qualname__') and coro.__qualname__: coro_name = coro.__qualname__ elif hasattr(coro, '__name__') and coro.__name__: coro_name = coro.__name__ else: # Stop masking Cython bugs, expose them in a friendly way. coro_name = f'<{type(coro).__name__} without __name__>' return f'{coro_name}()' def is_running(coro): try: return coro.cr_running except AttributeError: try: return coro.gi_running except AttributeError: return False coro_code = None if hasattr(coro, 'cr_code') and coro.cr_code: coro_code = coro.cr_code elif hasattr(coro, 'gi_code') and coro.gi_code: coro_code = coro.gi_code coro_name = get_name(coro) if not coro_code: # Built-in types might not have __qualname__ or __name__. if is_running(coro): return f'{coro_name} running' else: return coro_name coro_frame = None if hasattr(coro, 'gi_frame') and coro.gi_frame: coro_frame = coro.gi_frame elif hasattr(coro, 'cr_frame') and coro.cr_frame: coro_frame = coro.cr_frame # If Cython's coroutine has a fake code object without proper # co_filename -- expose that. filename = coro_code.co_filename or '
' lineno = 0 if coro_frame is not None: lineno = coro_frame.f_lineno coro_repr = f'{coro_name} running at {filename}:{lineno}' else: lineno = coro_code.co_firstlineno coro_repr = f'{coro_name} done, defined at {filename}:{lineno}' return coro_repr
.
34 Items
Change directory
Remove directory
Rename directory
..
204 Items
Change directory
Remove directory
Rename directory
__init__.py
1.16 KB
Edit
Delete
Copy
Move
Remame
__main__.py
3.26 KB
Edit
Delete
Copy
Move
Remame
__pycache__
33 Items
Change directory
Remove directory
Rename directory
base_events.py
73.06 KB
Edit
Delete
Copy
Move
Remame
base_futures.py
1.96 KB
Edit
Delete
Copy
Move
Remame
base_subprocess.py
8.66 KB
Edit
Delete
Copy
Move
Remame
base_tasks.py
2.58 KB
Edit
Delete
Copy
Move
Remame
constants.py
1.09 KB
Edit
Delete
Copy
Move
Remame
coroutines.py
3.32 KB
Edit
Delete
Copy
Move
Remame
events.py
27.76 KB
Edit
Delete
Copy
Move
Remame
exceptions.py
1.71 KB
Edit
Delete
Copy
Move
Remame
format_helpers.py
2.35 KB
Edit
Delete
Copy
Move
Remame
futures.py
13.88 KB
Edit
Delete
Copy
Move
Remame
locks.py
18.57 KB
Edit
Delete
Copy
Move
Remame
log.py
0.12 KB
Edit
Delete
Copy
Move
Remame
mixins.py
0.47 KB
Edit
Delete
Copy
Move
Remame
proactor_events.py
32.48 KB
Edit
Delete
Copy
Move
Remame
protocols.py
6.79 KB
Edit
Delete
Copy
Move
Remame
queues.py
7.79 KB
Edit
Delete
Copy
Move
Remame
runners.py
6.68 KB
Edit
Delete
Copy
Move
Remame
selector_events.py
44.06 KB
Edit
Delete
Copy
Move
Remame
sslproto.py
30.72 KB
Edit
Delete
Copy
Move
Remame
staggered.py
5.85 KB
Edit
Delete
Copy
Move
Remame
streams.py
26.06 KB
Edit
Delete
Copy
Move
Remame
subprocess.py
7.23 KB
Edit
Delete
Copy
Move
Remame
taskgroups.py
7.6 KB
Edit
Delete
Copy
Move
Remame
tasks.py
33.01 KB
Edit
Delete
Copy
Move
Remame
threads.py
0.77 KB
Edit
Delete
Copy
Move
Remame
timeouts.py
4.45 KB
Edit
Delete
Copy
Move
Remame
transports.py
10.47 KB
Edit
Delete
Copy
Move
Remame
trsock.py
2.42 KB
Edit
Delete
Copy
Move
Remame
unix_events.py
50.9 KB
Edit
Delete
Copy
Move
Remame
windows_events.py
33.31 KB
Edit
Delete
Copy
Move
Remame
windows_utils.py
4.94 KB
Edit
Delete
Copy
Move
Remame