Перейти к содержанию

Разработка

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.