Public api meetings#117
Conversation
dkuptsov
left a comment
There was a problem hiding this comment.
Спасибо, PR аккуратный и хорошо ложится в стиль либы. Одно замечание, которое стоит поправить до мержа (потенциальный краш), и пара мелочей. Детали — в инлайн-комментариях.
| if 'type' in kwargs: | ||
| self.type = kwargs['type'] | ||
| if 'start_time' in kwargs: | ||
| self.start_time = _set_utc_timezone(datetime.strptime(kwargs['start_time'], constants.DATE_TIME_FORMAT)) |
There was a problem hiding this comment.
Нет проверки на None, в отличие от MeetingResponse.start_time, где сделано if 'start_time' in kwargs and kwargs['start_time'] is not None. Если сервер для action_type='deleted' (или иного) пришлёт start_time: null, то strptime(None, ...) упадёт с TypeError. А так как meeting_action парсится при разборе любого комментария задачи, это может уронить get_task/get_comments. Предлагаю выровнять с MeetingResponse:
if 'start_time' in kwargs and kwargs['start_time'] is not None:
self.start_time = _set_utc_timezone(datetime.strptime(kwargs['start_time'], constants.DATE_TIME_FORMAT))| if 'task_ids' in kwargs: | ||
| self.task_ids = list(kwargs['task_ids']) if kwargs['task_ids'] is not None else None | ||
| if 'members' in kwargs: | ||
| self.members = [entities.MeetingMember(**m) for m in kwargs['members']] |
There was a problem hiding this comment.
Тут (и в meeting_rooms ниже) list comprehension без guard на null: если поле придёт как null, итерация упадёт. Если сервер гарантирует пустой массив вместо null — некритично, но для надёжности лучше добавить and kwargs['members'] is not None по аналогии с task_ids.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
c0e7cd7 to
7f2d905
Compare
https://pyrus.com/t#id225009663
Паблик апи встреч