В логе — кортеж вместо сообщения
В логе ошибок оформления заказа вместо сообщения появляются строки вида (1, 5, 3).
Исправьте OutOfStockError так, чтобы str(e) было
товар 1: запрошено 5, осталось 3, а атрибуты product_id, requested, left сохранились.
Подсказка 1 из 2
Выведите e.args.
Подсказка 2 из 2
Передайте готовое сообщение родителю: super().__init__(f"товар {product_id}: ...").