Как работает выражение «с» в Flask (Jinja2)?

В Python вы можете использоватьwith утверждение как это (источник):

class controlled_execution:
    def __enter__(self):
        # set things up
        return thing
    def __exit__(self, type, value, traceback):
        # tear things down

with controlled_execution() as thing:
     # some code

В Flask / Jinja2 стандартная процедура использования флеш-сообщений следующая (источник):

{% with messages = get_flashed_messages() %}
  {% if messages %}
    {% for message in messages %}
      <!-- do stuff with `message` -->
    {% endfor %}        
  {% endif %}
{% endwith %}

Я хотел бы знать, как{% with messages = get_flashed_messages() %} работает с точки зрения синтаксиса.

Я не смог воссоздать его на чистом Python:

with messages = get_flashed_messages(): pass повышенияSyntaxErrorwith get_flashed_messages() as messages: pass повышенияAttributeError: __exit__

(Я импортировалget_flashed_messages отflask в обоих случаях).

Ответы на вопрос(2)

Ваш ответ на вопрос