Skip to content

Releases: MaxApiTeam/PyMax

PyMax 2.1.3

07 Jun 18:26
6cd0525

Choose a tag to compare

PyMax 2.1.3

Patch-релиз про устойчивость к живым payload-ам Max, корректный lifecycle соединения и более аккуратную интеграцию logging.

Added

  • Добавлен UnknownAttachment для вложений с неизвестным _type. Такие вложения больше не ломают парсинг Message и сохраняют дополнительные поля payload-а.

Fixed

  • Message больше не падает на неизвестных типах вложений вроде UNSUPPORTED.
  • AudioAttachment принимает payload без duration и audioId.
  • VideoAttachment принимает payload без duration.
  • ElementAttributes.url и Element.length стали необязательными.
  • Photo(url=...) корректно валидирует URL с query string.
  • При потере соединения App.started сбрасывается, ping-task отменяется, pending API-запросы очищаются без Future exception was never retrieved.
  • Reconnect/close после штатного сетевого обрыва меньше шумит exception-логами.

Changed

  • configure_logging() теперь уважает logging host-приложения и не очищает чужие handlers.
  • Если logging не настроен, PyMax по-прежнему включает pretty-логи из коробки.
  • Для принудительного pretty-logging добавлен configure_logging(..., force=True).
  • TCP msgpack decoder стал проще и подробнее логирует payload при ошибках декодирования.

Migration notes

  • Обычный код на Client и WebClient менять не нужно.
  • Если код рассчитывал на то, что configure_logging() всегда заменяет handler-ы pymax, передайте force=True.
  • Если код ловил ValidationError на неизвестных вложениях, теперь вместо ошибки придет UnknownAttachment.

PyMax 2.1.2

03 Jun 16:34
473218a

Choose a tag to compare

PyMax 2.1.2

Патч-релиз про стабильность login, корректные timeout-ы API-запросов, совместимость FolderList с Pydantic и обновленный publish workflow.

Added

  • get_bot_init_data() теперь можно вызывать без chat_id, если web app запускается вне конкретного чата.

Fixed

  • ExtraConfig.request_timeout снова применяется к API-запросам по умолчанию.
  • Явный timeout в низкоуровневом invoke() больше не перетирается конфигом.
  • Login-ответ без нового token больше не ломает запуск клиента.
  • Сохраненный токен больше не перезаписывается пустым значением.
  • FolderList больше не ломает dict(...) и стандартную сериализацию Pydantic-модели.

Changed

  • Publish workflow упрощен: сборка, проверка дистрибутивов и публикация в PyPI разделены на понятные шаги.
  • Версия пакета обновлена до 2.1.2.
  • Добавлены release notes для 2.1.2.

Migration notes

  • Если код итерировал FolderList напрямую, замените это на folder_list.folders.
  • Обычный код на Client и WebClient менять не нужно.

PyMax 2.1.1

28 May 13:59

Choose a tag to compare

PyMax 2.1.1

Патч-релиз про загрузку фото профиля, обновление токенов сессии и стабильность TCP-подключения через proxy.

Added

  • Прямая загрузка фотографии профиля через change_profile(photo=...).
  • upload_photo() теперь умеет запрашивать upload URL для profile photo через флаг profile.

Fixed

  • Исправлен TLS-handshake при TCP-подключении через proxy: теперь передается server_hostname.
  • После close_all_sessions() локальный токен сессии обновляется не только в хранилище, но и в памяти клиента.
  • Обновление токена после login сохраняется в session store.
  • change_profile(photo=...) теперь передает токен загруженной фотографии в payload профиля.

Changed

  • Обновлена документация по фотографии профиля.
  • Добавлены release notes для 2.1.1.
  • Версия пакета обновлена до 2.1.1.

Migration notes

  • Обычный код на Client и WebClient менять не нужно.
  • Если раньше использовали ручной photo_token, он продолжает работать.
  • Для прямой загрузки фото теперь можно передавать Photo:

PyMax 2.1.0

26 May 18:50
2694c3d

Choose a tag to compare

PyMax 2.1.0

Релиз про новые API-методы, стабильность TCP-клиента и нормальную release-гигиену.

Added

  • Join requests для групп и каналов:
    • get_join_requests()
    • confirm_join_request()
    • confirm_join_requests()
    • decline_join_request()
    • decline_join_requests()
  • 2FA:
    • check_2fa()
    • change_password()
  • QR login approval:
    • authorize_qr_login(qr_link)
  • Web app bot init data:
    • get_bot_init_data(bot_id, chat_id, start_param=None)
  • Доменные типы Member, Presence, InitData.

Fixed

  • Исправлен TCP header layout: ver:1, cmd:1, seq:2, opcode:2, len/cof:4.
  • TCP seq больше не падает после 255; диапазон теперь 0..65535.
  • Upload фото, видео и файлов теперь использует ExtraConfig.proxy для HTTP upload-запросов.
  • MaxApiError.title и MaxApiError.localized_message теперь могут отсутствовать в payload.

Changed

  • Capability разделен на ProfileOptions и TwoFactorAction.
  • Добавлен BotsService.
  • Black, Flake8 и isort заменены на Ruff.
  • Добавлены pre-commit hooks и release checks перед публикацией.

Migration notes

  • Обычный код на Client и WebClient менять не нужно.
  • Если импортировали pymax.api.auth.enums.Capability, замените его на:
    • TwoFactorAction для 2FA-действий;
    • ProfileOptions для признаков профиля.
  • Если код ожидал, что MaxApiError.title всегда строка, теперь нужно учитывать None.

PyMax 2.0.1

23 May 17:13

Choose a tag to compare

Фикс критичного бага

Исправлено:

  • Исправлен маппинг ивентов из за которого они не проходили

PyMax 2.0.0

23 May 16:00

Choose a tag to compare

PyMax 2.0.0 — полный переписанный релиз.

Обратной совместимости с 1.x нет.

Старая версия:

  • PyPI: maxapi-python==1.2.5
  • Ветка: v1
  • Тег: v1.2.5

Основные изменения:

  • Полностью переработанная архитектура
  • Новая система роутинга
  • Гибкая система авторизации
  • Кастомные хранилища сессий
  • Доменные типы с активными методами
  • Улучшенная документация
  • TCP Client и WebSocket WebClient