Перейти к документации
Python

Журнал изменений

Каждый выпуск пакета, новые сверху.

0.0.1

Первый выпуск. Он покрывает весь TypeScript SDK в том виде, в каком тот был в 0.0.8, плюс изменения, запланированные после него: 430 методов в 41 пространстве имён, каждый под своим именем из TypeScript в snake_case. Проверка соответствия доказывает, что каждый из них отправляет ровно тот запрос, который отправляет его аналог на TypeScript, один раз без опций и один раз со всеми заданными опциями.

  • У OpenEmail и AsyncOpenEmail есть атрибут для каждого пространства имён, от emails, threads и templates до provider_imports, dns_connections и account. listAll становится list_all, getActive становится get_active, а tempMail становится temp_mail.
  • Тело запроса представляет собой словарь, ключи которого сохраняют имена API в camelCase, параметры вызова передаются именованными аргументами в snake_case, например idempotency_key= и limit=, а ответ возвращается словарём. У каждого тела и результата есть TypedDict в openemail.types с тем же именем, что и в TypeScript.
  • У AsyncOpenEmail те же методы с теми же аргументами, вызываемые через await, и он работает и на asyncio, и на trio.
  • У каждого постраничного ресурса есть list для одной страницы, list_all для всех элементов списком и iterate, который выдаёт элементы и запрашивает следующую страницу, только когда до неё доходит.
  • Отказ API выбрасывает OpenEmailApiError со status, type, code, param и request_id, а также is_validation, is_not_found, is_rate_limited, is_step_up_required, is_retryable и другими проверками. Полное отсутствие ответа выбрасывает OpenEmailNetworkError с is_timeout, когда истёк срок ожидания.
  • from openemail import openemail даёт готовый клиент, который строится из OPENEMAIL_API_KEY при первом обращении, а init настраивает его один раз при запуске. create_temp_mail и create_async_temp_mail открывают одноразовые ящики без учётных данных.
  • access_token= принимает токен доступа OAuth или функцию, которая его возвращает и вызывается перед каждым запросом. verify_webhook_signature проверяет доставку за постоянное время и возвращает разобранное событие. client.raw.request достаёт до эндпоинта, который ещё не оборачивает ни один метод.
  • Чтения повторяются при 408 и 5xx, а 429 только если он несёт Retry-After. timeout ограничивает всю попытку, включая тело ответа, а учётные данные никогда не отправляются по обычному HTTP, кроме как на сервер на этой машине.
  • Ему нужен Python 3.10 или новее, и он зависит только от httpx, anyio и typing-extensions.