(*, stacklevel: int = 1)
| 48 | |
| 49 | |
| 50 | def get_caller_name(*, stacklevel: int = 1) -> str: |
| 51 | frame = inspect.currentframe() |
| 52 | assert frame is not None |
| 53 | |
| 54 | for i in range(stacklevel): |
| 55 | frame = frame.f_back |
| 56 | assert frame is not None, f"no {i}th frame" |
| 57 | |
| 58 | return frame.f_code.co_name |
| 59 | |
| 60 | |
| 61 | def clear_locals(string: str, *, stacklevel: int) -> str: |