Он уже работает довольно хорошо, но моя IDE (PyCharm) считает, что переменные не используются, и окрашивает их в светло-серый цвет:

AFAIK f-строки используют магическое переписывание.
Есть ли способ реализовать это, чтобы IDE знала, что переменные используются?
Связано: реализация синтаксиса, подобного f-строке, с поддержкой Django SafeString
Вот моя текущая реализация:
Код: Выделить всё
def h(html):
"""
Django's format_html() on steroids
"""
def replacer(match):
call_frame = sys._getframe(3)
return conditional_escape(
eval(match.group(1), call_frame.f_globals, call_frame.f_locals))
return mark_safe(re.sub(r'{(.*?)}', replacer, html))
Прежде чем писать ответ, убедитесь, что вы знакомы с магией Conditional_escape()
Подробнее здесь: https://stackoverflow.com/questions/668 ... ormat-html
Мобильная версия