Разработка¶
uv sync
uv run pytest
uv run ruff check . && uv run ruff format --check . && uv run ty check
uv run mkdocs serve # документация по адресу http://127.0.0.1:8000
История изменений ведётся в
CHANGELOG.md. Версия
пакета определяется по git-тегу. Чтобы выпустить новую версию, перенесите раздел Unreleased
в раздел с номером версии, опубликуйте GitHub Release с тегом вида v* (например, v0.3.0) и
скопируйте этот раздел в описание релиза. Workflow релиза соберёт пакет и опубликует его на PyPI;
документация публикуется на GitHub Pages при каждом push в main. Список выпущенных версий — на
странице релизов.
GIF в README генерируется скриптом tools/render_demo_gif.py — он покадрово отрисовывает
схематичный экран управления промптами средствами Pillow:
uv run python tools/render_demo_gif.py docs/assets/demo.gif. При изменении
сценария отредактируйте скрипт и перегенерируйте файл.
Документация ведётся на двух языках: docs/en и docs/ru. Изменение на любой странице вносится
в её перевод в рамках того же изменения.
Контракт с Langfuse SDK¶
Библиотека опирается на поведение Langfuse SDK, которое не гарантировано его публичным API: набор
полей промпт-клиента, возврат одного и того же объекта, пока запись в кеше свежая, немедленная
выдача устаревшей записи с обновлением в фоне, а также правила TemplateParser, которым библиотека
подставляет переменные. Модуль tests/test_sdk_contract.py закрепляет каждое из этих допущений
тестом против настоящего клиента с подменённым HTTP API: изменение в SDK приведёт к падению сборки,
а не к незаметной смене поведения. CI запускает тесты на минимальной поддерживаемой версии
langfuse и на версии из lock-файла; ночной workflow проверяет последние выпуски
langfuse 4.x и 5.x.