К содержимому

Документация

Python SDK: Sources: входы процесса и цены

ctx.sources() читает заранее закреплённые входы процесса и локально сравнивает цены. Произвольное письмо или чужой прогон недоступны.

Примеры являются фрагментами тела def run(ctx):. Все методы SDK синхронны, await не нужен.

Методы

input

ctx.sources().input(key) -> dict[str, Any]

Аргумент Тип Обязателен Назначение
key str | None Да Ключ записи, состояния, объекта или входа по назначению метода.

Результат: dict[str, Any].

Для входа типа records возвращает records, run_id, collected_at. Для входа mail возвращает проверенное письмо с текстом, темой, отправителем, сроком хранения и метаданными вложений.

result = ctx.sources().input('catalog')

document

ctx.sources().document(key, id) -> Document

Аргумент Тип Обязателен Назначение
key str | None Да Ключ записи, состояния, объекта или входа по назначению метода.
id str Да Разрешённый идентификатор вложения/товара по контексту.

Результат: Document. Объект SDK: используйте его методы, не передавайте целиком в emit.

Читает безопасное вложение только из письма выбранного входа. Обработчик документов работает внутри системы. Содержимое вложения не передаётся внешней модели.

result = ctx.sources().document('supplier', 'attachment-id')

compare_prices

ctx.sources().compare_prices(sources) -> list[dict[str, Any]]

Аргумент Тип Обязателен Назначение
sources dict[str, list[dict[str, Any]]] Да Словарь 2–10 источников со списками sku/price/currency.

Результат: list[dict[str, Any]].

Сравнивает от двух до десяти источников. Каждый источник содержит до 5000 записей с sku (строка), price (число до двух знаков после запятой) и currency (например, RUB). Артикулы сопоставляются точно. Разные валюты, отрицательные цены и повторяющиеся артикулы внутри одного источника отклоняются.

result = ctx.sources().compare_prices({
    'catalog': [{'sku': 'A-1', 'price': 1250, 'currency': 'RUB'}],
    'supplier': [{'sku': 'A-1', 'price': 1200, 'currency': 'RUB'}],
})

Ошибки и контекст выполнения

Все вызовы синхронны. Неверный аргумент или формат данных может вызвать ValueError/TypeError; отказ платформы или недоступность сервиса вызывает RuntimeError. Отсутствие элемента/значения даёт None либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.