PHP 8.2.30
Preview: format_helpers.py Size: 2.35 KB
/lib64/python3.8/asyncio/format_helpers.py

import functools
import inspect
import reprlib
import sys
import traceback

from . import constants


def _get_function_source(func):
    func = inspect.unwrap(func)
    if inspect.isfunction(func):
        code = func.__code__
        return (code.co_filename, code.co_firstlineno)
    if isinstance(func, functools.partial):
        return _get_function_source(func.func)
    if isinstance(func, functools.partialmethod):
        return _get_function_source(func.func)
    return None


def _format_callback_source(func, args):
    func_repr = _format_callback(func, args, None)
    source = _get_function_source(func)
    if source:
        func_repr += f' at {source[0]}:{source[1]}'
    return func_repr


def _format_args_and_kwargs(args, kwargs):
    """Format function arguments and keyword arguments.

    Special case for a single parameter: ('hello',) is formatted as ('hello').
    """
    # use reprlib to limit the length of the output
    items = []
    if args:
        items.extend(reprlib.repr(arg) for arg in args)
    if kwargs:
        items.extend(f'{k}={reprlib.repr(v)}' for k, v in kwargs.items())
    return '({})'.format(', '.join(items))


def _format_callback(func, args, kwargs, suffix=''):
    if isinstance(func, functools.partial):
        suffix = _format_args_and_kwargs(args, kwargs) + suffix
        return _format_callback(func.func, func.args, func.keywords, suffix)

    if hasattr(func, '__qualname__') and func.__qualname__:
        func_repr = func.__qualname__
    elif hasattr(func, '__name__') and func.__name__:
        func_repr = func.__name__
    else:
        func_repr = repr(func)

    func_repr += _format_args_and_kwargs(args, kwargs)
    if suffix:
        func_repr += suffix
    return func_repr


def extract_stack(f=None, limit=None):
    """Replacement for traceback.extract_stack() that only does the
    necessary work for asyncio debug mode.
    """
    if f is None:
        f = sys._getframe().f_back
    if limit is None:
        # Limit the amount of work to a reasonable amount, as extract_stack()
        # can be called for each coroutine and future in debug mode.
        limit = constants.DEBUG_STACK_DEPTH
    stack = traceback.StackSummary.extract(traceback.walk_stack(f),
                                           limit=limit,
                                           lookup_lines=False)
    stack.reverse()
    return stack

Directory Contents

Dirs: 1 × Files: 29

Name Size Perms Modified Actions
- drwxr-xr-x 2024-03-21 10:19:17
Edit Download
70.92 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
2.51 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
8.64 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
2.41 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
888 B lrw-r--r-- 2023-06-06 13:32:21
Edit Download
8.59 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
25.55 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
1.59 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
2.35 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
12.85 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
16.87 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
124 B lrw-r--r-- 2023-06-06 13:32:21
Edit Download
31.31 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
6.97 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
8.03 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
2.01 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
38.08 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
26.57 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
5.85 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
26.03 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
7.88 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
33.13 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
10.24 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
5.74 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
47.96 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
32.10 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
4.94 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
1.20 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
3.26 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).