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 либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.