Ни разработчики python, ни разработчики flask не берут на себя ответственность за то, что это ошибка. Начиная с python 3.8 с unittest.mock и с макетной версией 4.0.0 (они одинаковы), он сначала проверяет, существует ли атрибут, который вы исправляете. Он должен возвращать атрибут или вызывать AttributeError. Flask вызывает RuntimeError, тем самым нарушая ожидаемый c logi. Кстати, разработчики Flask предложили вообще не исправлять flask .g, поскольку это всего лишь прокси для flask .globals.
В конечном итоге я сохранял соединение с БД в flask. g.db и хотел исправить это. Мое решение состояло в том, чтобы передать соединение с базой данных в ресурс при создании и не использовать flask .g вне моих вызовов before_request и teardown_request. В некоторых случаях, когда мне нужно исправить это, мне просто нужна правильная настройка контекста приложения.