From 66241cd01a5dd70ec0f5730a9e58a79a652ebfe2 Mon Sep 17 00:00:00 2001 From: nikto_b Date: Mon, 21 Jul 2025 15:31:26 +0300 Subject: [PATCH] Update `README.md`: add pipeline descripiton --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/README.md b/README.md index 93fe6a7..c307967 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,49 @@ assert tst == 1 ``` +---- + +#### Сборка конвейеров преобразований: + +Пусть, имеется несколько методов-потребителей, которые необходимо вызывать последовательно: + +```python + +from breakshaft.convertor import ConvRepo + +repo = ConvRepo() + +# Объявляем A и B, а также методы преобразований - как в прошлом примере + +type cons2ret = str # избегаем использования builtin-типов, чтобы избежать простых коллизий + + +def consumer1(dep: A) -> B: + return B(float(42)) + + +def consumer2(dep: B) -> cons2ret: + return str(dep.b) + + +def consumer3(dep: cons2ret) -> int: + return int(float(dep)) + + +pipeline = repo.create_pipeline( + (B,), + [consumer1, consumer2, consumer3], + force_commutative=True, + allow_sync=True, + allow_async=False, + force_async=False +) + +dat = pipeline(B(42)) +assert dat == 42 +``` + + ---- #### Как получить граф преобразований: