Сделать поля PhotoAttachmentPayload опциональными согласно официальному API#178
Сделать поля PhotoAttachmentPayload опциональными согласно официальному API#178max92110 wants to merge 17 commits into
Conversation
…одели проверяется наличие хотя бы одного из полей photo_id, token или url
…етоды, документация.
…возможности обработки кастомных исключений
…например только URL) поэтому предлагаю сделать
|
Не стоит путать https://dev.max.ru/docs-api/objects/Message maxapi/maxapi/types/attachments/attachment.py Lines 28 to 41 in c7569bb
maxapi/maxapi/types/attachments/image.py Lines 20 to 33 in c7569bb
|
There was a problem hiding this comment.
Pull request overview
PR приводит модель PhotoAttachmentPayload в соответствие с контрактом MAX API, позволяя корректно валидировать payload фото-вложений при отсутствии части полей. Однако в PR также попали изменения поведения Dispatcher.handle() и .python-version, которые не относятся к заявленной цели и меняют контракт/окружение разработки.
Changes:
- Сделаны опциональными поля
photo_id/token/urlвPhotoAttachmentPayload. - В
Dispatcher.handle()добавлено повторное пробрасывание исключений после логирования (меняет контракт обработки ошибок). - Обновлён
.python-versionс 3.10 на 3.12.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| maxapi/types/attachments/attachment.py | Делает поля payload фото-вложений опциональными, чтобы не падать на неполных ответах API. |
| maxapi/dispatcher.py | Меняет поведение обработки ошибок: исключения начинают всплывать из handle(). |
| .python-version | Меняет локально рекомендуемую версию Python на 3.12 (вне заявленного скоупа PR). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| photo_id (int): Идентификатор фотографии. | ||
| token (str): Токен для доступа к фото. | ||
| url (str): URL фотографии. |
| e, | ||
| exc_info=e.cause, | ||
| ) | ||
| raise e |
| process_info, | ||
| e, | ||
| ) | ||
| raise e |
| process_info, | ||
| e, | ||
| ) | ||
| raise e |
| @@ -1 +1 @@ | |||
| 3.10 | |||
| 3.12 | |||
| photo_id: int | None = None | ||
| token: str | None = None | ||
| url: str | None = None |


Что изменено
В модели
PhotoAttachmentPayloadобновлены типы полей: значения, которые в официальной документации MAX API могут отсутствовать, теперь помечены как опциональные.Это приводит типизацию библиотеки в соответствие с актуальным контрактом API и позволяет корректно обрабатывать payload фото-вложений, где часть данных не возвращается сервером.
Почему это нужно
Согласно официальной документации MAX API, поля в payload фото-вложений не гарантируются как обязательные. Ранее модель ожидала их наличие всегда, из-за чего могли возникать ошибки валидации при обработке корректных ответов API, если некоторые поля отсутствовали.
Что это исправляет
PhotoAttachmentPayload.Совместимость
Изменение обратно совместимо: существующий код, который работает с заполненными полями
PhotoAttachmentPayload, продолжит работать как раньше. При этом пользователям теперь нужно учитывать, что эти поля могут бытьNone.Ссылка на документацию
Официальная документация API:
https://dev.max.ru/docs-api/objects/NewMessageBody