def dandy_warning_handler(
message: Warning | str,
category: type[Warning],
filename: str,
lineno: int,
file: TextIO | None = None,
line: str | None = None,
):
print(f'Warning: {message}')
print(f'Category: {category.__name__}')
print(f'File: {filename}:{lineno}')
if file:
print(f'File IO: {file.name}:{lineno}')
if line:
print(f'Source: {line.strip()}')
print('\nStack trace:')
traceback.print_stack(limit=-2)