ChatGPT Код 👁 16

Разбор traceback Python — причина ошибки и фикс

Разбор traceback Python с конкретной причиной и минимальной правкой — без воды и догадок.

Промпт Запустить →
Разбери ошибку по трейсбэку и дай минимальную правку — без общих рассуждений о хорошем коде.

Трейсбэк целиком: [ТРЕЙСБЭК: Traceback (most recent call last): File "app/orders.py", line 84, in build_report total = sum(o.amount for o in orders) TypeError: unsupported operand type(s) for +: 'int' and 'NoneType']
Что делает код: [КОНТЕКСТ: собирает отчёт по заказам за день, amount приходит из базы, у части заказов он пустой]
Версия и окружение: [СРЕДА: Python 3.11, Postgres через psycopg2, запускается по cron в 6 утра]
Что я уже пробовал: [ПРОБОВАЛ: добавил print перед строкой 84, вижу, что в списке есть заказ с amount=None]

Ответ строго в таком порядке:
1. Тип ошибки и что она означает на человеческом языке — одна строка.
2. Причина в этом коде: какая строка, какое значение, почему упало. Не «возможно», а по трейсбэку.
3. Минимальная правка кодом «было → стало». Именно минимальная: та, что чинит падение.
4. Правильная правка, если минимальная лечит симптом: где на самом деле должна обрабатываться пустота —
   в запросе, в модели или при чтении.
5. Как поймать это раньше в следующий раз: одна проверка или один тест.

Отсечка. Не предлагай обернуть всё в try-except и залогировать — падение исчезнет, а отчёт молча
станет неверным. Не советуй сменить библиотеку или переписать на другой архитектуре: мне нужно
починить эту строку. Не выдумывай, что в базе: если из трейсбэка не видно, откуда берётся None,
скажи, какой запрос надо посмотреть.

Проверка перед выдачей: назови вход, на котором ошибка воспроизводится, и убедись, что после твоей
правки на этом входе результат не просто не падает, а верный.
Запустить промпт →

Пример результата

1. AttributeError: NoneType has no attribute "append" 2. Причина: get_items() возвращает None на пустом фильтре, на строке 42 вы делаете .append() без проверки. 3. Было: items.append(x). Стало: items = items or []; items.append(x). 4. Чек-лист: 1) аннотируй Optional[List], 2) включи mypy strict, 3) пиши тест на пустой случай.

Похожие промпты

Рефакторинг легаси-модуля в Kimi: карта, план, код по шагам
Kimi
Рефакторинг легаси-модуля в Kimi: карта, план, код по шагам
Kimi
Сайт-визитка с 3D одним промптом — Kimi K3
Claude
Системный промпт для AI Agent ноды n8n — Claude
DeepSeek
Телеграм-бот на n8n в DeepSeek: схема нод, которую можно собрать за вечер

Полезные статьи

Скилы для ИИ: 8 готовых SKILL.md на русском — от коротких до больших
Как сделать мультфильм нейросетью по сценарию: промты и замеры
Дипсик и фото: как загрузить, что умеет и почему не грузится

Все гайды →