from __future__ import annotations from pprint import pformat from typing import Any, NoReturn from markupsafe import Markup, escape from plain.http import Response from plain.views.exceptions import ResponseException def dd(*objs: Any) -> NoReturn: """ Dump and die. Dump the object and raise a ResponseException with the dump as the response content. """ print_objs = "\n".join([pformat(obj) for obj in objs]) print(f"Dumping objects:\n{print_objs}") html_objs = [ Markup("
") + escape(pformat(obj)) + Markup("")
for obj in objs
]
combined_dump_str = Markup("\n\n").join(html_objs)
response = Response()
response.status_code = 500
response.content = combined_dump_str
response.headers["Content-Type"] = "text/html"
raise ResponseException(response)