statements-version: сверка checkout библиотеки с requirements.txt в make venv/install; тег — из requirements (AURORA-1677)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
88ea49b00e
commit
b9e1cbe617
22
Makefile
22
Makefile
@ -7,13 +7,15 @@ COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
|
|||||||
COMPOSE_PROJECT ?= arm-ka
|
COMPOSE_PROJECT ?= arm-ka
|
||||||
IMAGE ?= scan-gateway:dev
|
IMAGE ?= scan-gateway:dev
|
||||||
STATEMENTS_DIR ?= ../pylib_ai_arm_statements
|
STATEMENTS_DIR ?= ../pylib_ai_arm_statements
|
||||||
STATEMENTS_TAG ?= v0.1.1
|
# Тег выпуска библиотеки — по версии, закреплённой в api/requirements.txt
|
||||||
|
STATEMENTS_TAG ?= v$(shell sed -n 's/^pylib_ai_arm_statements==//p' api/requirements.txt)
|
||||||
|
|
||||||
.PHONY: help venv install lint test test-integration check docker-build check-full up emulator golden-update
|
.PHONY: help venv install statements-version lint test test-integration check docker-build check-full up emulator golden-update
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "venv - окружение api/.venv (Python 3.11) с зависимостями и локальной библиотекой arm_statements"
|
@echo "venv - окружение api/.venv (Python 3.11) с зависимостями и локальной библиотекой arm_statements"
|
||||||
@echo "install - установить или переустановить локальную библиотеку arm_statements"
|
@echo "install - установить или переустановить локальную библиотеку arm_statements"
|
||||||
|
@echo "statements-version - сверить checkout библиотеки (STATEMENTS_DIR) с версией в api/requirements.txt"
|
||||||
@echo "lint - ruff check, ruff format --check, mypy src"
|
@echo "lint - ruff check, ruff format --check, mypy src"
|
||||||
@echo "test - pytest без интеграционных тестов"
|
@echo "test - pytest без интеграционных тестов"
|
||||||
@echo "test-integration - интеграционные тесты (нужны NATS и MinIO: make up)"
|
@echo "test-integration - интеграционные тесты (нужны NATS и MinIO: make up)"
|
||||||
@ -24,15 +26,27 @@ help:
|
|||||||
@echo "emulator - запустить эмулятор ИС Сканирование (python -m src.scan_emulator)"
|
@echo "emulator - запустить эмулятор ИС Сканирование (python -m src.scan_emulator)"
|
||||||
@echo "golden-update - пересобрать эталоны нормализатора ../fixtures/ocr/expected_normalize/ (diff смотреть в fixtures)"
|
@echo "golden-update - пересобрать эталоны нормализатора ../fixtures/ocr/expected_normalize/ (diff смотреть в fixtures)"
|
||||||
|
|
||||||
|
# Сверка checkout библиотеки с версией из api/requirements.txt (pylib_ai_arm_statements==<версия>): VERSION checkout
|
||||||
|
# не равен закреплённой — ошибка; checkout не на теге v<версия> — предупреждение (правка библиотеки до выпуска).
|
||||||
|
# docker-build требует тег строго.
|
||||||
|
statements-version:
|
||||||
|
@ver=$$(cat "$(STATEMENTS_DIR)/VERSION" 2>/dev/null) || \
|
||||||
|
{ echo "Ошибка: нет $(STATEMENTS_DIR)/VERSION — клонируйте RSHB/pylib_ai_arm_statements рядом или задайте STATEMENTS_DIR" >&2; exit 1; }; \
|
||||||
|
[ "v$$ver" = "$(STATEMENTS_TAG)" ] || \
|
||||||
|
{ echo "Ошибка: в $(STATEMENTS_DIR) версия $$ver, в api/requirements.txt — $(STATEMENTS_TAG:v%=%)" >&2; exit 1; }; \
|
||||||
|
release=$$(git -C "$(STATEMENTS_DIR)" rev-parse -q --verify "refs/tags/$(STATEMENTS_TAG)^{commit}"); \
|
||||||
|
[ -n "$$release" ] && [ "$$release" = "$$(git -C "$(STATEMENTS_DIR)" rev-parse HEAD)" ] || \
|
||||||
|
echo "Предупреждение: $(STATEMENTS_DIR) не на теге $(STATEMENTS_TAG) — ставится рабочее дерево библиотеки"
|
||||||
|
|
||||||
# Python 3.11 (версия платформы); пропускаем внутренние raisa_* и устанавливаемые локально pylib_ai*
|
# Python 3.11 (версия платформы); пропускаем внутренние raisa_* и устанавливаемые локально pylib_ai*
|
||||||
venv:
|
venv: statements-version
|
||||||
cd api && uv venv --python 3.11 --allow-existing .venv
|
cd api && uv venv --python 3.11 --allow-existing .venv
|
||||||
cd api && grep -Ev '^(raisa_|pylib_ai)' requirements.txt | uv pip install --python .venv/bin/python -r -
|
cd api && grep -Ev '^(raisa_|pylib_ai)' requirements.txt | uv pip install --python .venv/bin/python -r -
|
||||||
cd api && grep -v '^-r' requirements-dev.txt | uv pip install --python .venv/bin/python -r -
|
cd api && grep -v '^-r' requirements-dev.txt | uv pip install --python .venv/bin/python -r -
|
||||||
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
||||||
|
|
||||||
# Установить или переустановить библиотеку в окружение backend.
|
# Установить или переустановить библиотеку в окружение backend.
|
||||||
install:
|
install: statements-version
|
||||||
uv venv --python 3.11 --allow-existing "$(VENV)"
|
uv venv --python 3.11 --allow-existing "$(VENV)"
|
||||||
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
||||||
|
|
||||||
|
|||||||
@ -147,6 +147,8 @@ ack (с `attempt` повторного запроса); файл в ИС вто
|
|||||||
§11.9). Это библиотека `pylib_ai_arm_statements==0.1.1` с импортом `arm_statements`.
|
§11.9). Это библиотека `pylib_ai_arm_statements==0.1.1` с импортом `arm_statements`.
|
||||||
В PyPI она не публикуется: `make venv` устанавливает её из `../pylib_ai_arm_statements`,
|
В PyPI она не публикуется: `make venv` устанавливает её из `../pylib_ai_arm_statements`,
|
||||||
`make install` переустанавливает библиотеку после изменений. Путь можно задать через `STATEMENTS_DIR`.
|
`make install` переустанавливает библиотеку после изменений. Путь можно задать через `STATEMENTS_DIR`.
|
||||||
|
Перед установкой обе цели сверяют checkout (`make statements-version`): его `VERSION` должен совпадать с версией
|
||||||
|
в `api/requirements.txt` (иначе ошибка), checkout не на теге `v<версия>` — предупреждение. `make docker-build` требует тег.
|
||||||
Словари (редакции форм, двойники, `label` → тип) живут в библиотеке (`default_rules()`)
|
Словари (редакции форм, двойники, `label` → тип) живут в библиотеке (`default_rules()`)
|
||||||
и обновляются вместе с ней.
|
и обновляются вместе с ней.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user