build: копия arm_statements в линтерах и тестах, statements-check в check-full (#52)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
412a322b9d
commit
f5ced4177e
@ -13,6 +13,11 @@ Stateless-сервис разбора XLS/XLSX/XLSB: ОСВ по счетам (
|
||||
в коде. Словари синонимов — `rules/*.yaml`. Фикстуры `../fixtures/osv/**` — регрессия, не спецификация формата:
|
||||
новый формат = новая фикстура + синоним, не новый `if`.
|
||||
|
||||
## Правила репозитория
|
||||
- `api/arm_statements/` — копия пакета `arm-statements`, напрямую не править: обновление — `../docs/scripts/sync-statements.sh`
|
||||
(`--in-place` в PR фичи), свежесть — `make statements-check` (в `check-full`). Словари `api/rules/statement_*.yaml`
|
||||
сервиса остаются до плана 4.
|
||||
|
||||
## Тесты
|
||||
- property-тесты инвариантов (§1.4) на всех файлах `../fixtures/osv/**` и `../fixtures/statements-xlsx/**`; для пакета ДКБ
|
||||
`../fixtures/osv-dkb/**` — `tests/fixtures/test_osv_dkb.py`: ожидаемые `needs_check` — манифест
|
||||
|
||||
15
Makefile
15
Makefile
@ -3,7 +3,7 @@ VENV := api/.venv
|
||||
BIN := $(CURDIR)/$(VENV)/bin
|
||||
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
|
||||
|
||||
.PHONY: venv lint test test-integration test-fixtures golden-update golden-check check docker-build check-full up
|
||||
.PHONY: venv lint test test-integration test-fixtures golden-update golden-check check docker-build check-full up statements-check
|
||||
|
||||
# Python 3.11 (версия платформы); внутренние пакеты raisa_* вне банка недоступны — пропускаем их
|
||||
venv:
|
||||
@ -14,7 +14,7 @@ venv:
|
||||
lint:
|
||||
cd api && $(BIN)/ruff check .
|
||||
cd api && $(BIN)/ruff format --check .
|
||||
cd api && $(BIN)/mypy src
|
||||
cd api && $(BIN)/mypy src arm_statements
|
||||
|
||||
test:
|
||||
cd api && $(BIN)/pytest -m "not integration"
|
||||
@ -42,8 +42,17 @@ docker-build:
|
||||
docker build -t tabular-parser .
|
||||
|
||||
# Полная проверка перед PR: быстрые проверки, затем NATS/MinIO из compose (make up), затем образ
|
||||
check-full: check test-integration docker-build
|
||||
check-full: check statements-check test-integration docker-build
|
||||
|
||||
# Только инфраструктура, нужная сервису (без arm-core): NATS и MinIO; postgres — для общей среды compose
|
||||
up:
|
||||
docker compose -f $(COMPOSE_FILE) up -d --wait postgres nats minio
|
||||
|
||||
# Свежесть копии api/arm_statements/ (../docs/dev/checks.md): 0 — синхронна; 10 — отстала или перечень кодов в docs
|
||||
# новее (цель зелёная, предупреждение вписать в описание PR); 20 и 2 — красная. Читает ../docs и ../arm-statements,
|
||||
# поэтому только в check-full, не в check
|
||||
ARM_KA_DOCS ?= ../docs
|
||||
statements-check:
|
||||
@rc=0; $(ARM_KA_DOCS)/scripts/sync-statements.sh --check --host-dir . || rc=$$?; \
|
||||
if [ $$rc -eq 10 ]; then echo "statements-check: ПРЕДУПРЕЖДЕНИЕ — впишите в описание PR"; \
|
||||
elif [ $$rc -ne 0 ]; then exit $$rc; fi
|
||||
|
||||
@ -8,7 +8,7 @@ target-version = "py311"
|
||||
select = ["E", "F", "I", "UP", "B", "PL"]
|
||||
|
||||
[tool.ruff.lint.isort]
|
||||
known-first-party = ["src"]
|
||||
known-first-party = ["src", "arm_statements"]
|
||||
|
||||
[tool.mypy]
|
||||
python_version = "3.11"
|
||||
@ -38,3 +38,19 @@ ignore_missing_imports = true
|
||||
[[tool.mypy.overrides]]
|
||||
module = ["src.parser", "src.parser.*"]
|
||||
disallow_untyped_defs = true
|
||||
|
||||
# Копия общего кода (sync-statements, не править) — в строгом режиме, как в репозитории arm-statements.
|
||||
# `strict = true` в overrides mypy (2.x) применяет глобально, а не к модулю, поэтому флаги семейства strict перечислены явно.
|
||||
[[tool.mypy.overrides]]
|
||||
module = ["arm_statements", "arm_statements.*"]
|
||||
disallow_any_generics = true
|
||||
disallow_subclassing_any = true
|
||||
disallow_untyped_calls = true
|
||||
disallow_untyped_defs = true
|
||||
disallow_incomplete_defs = true
|
||||
disallow_untyped_decorators = true
|
||||
warn_return_any = true
|
||||
warn_unused_ignores = true
|
||||
no_implicit_reexport = true
|
||||
strict_equality = true
|
||||
extra_checks = true
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
pythonpath = .
|
||||
testpaths =
|
||||
tests
|
||||
arm_statements/tests
|
||||
python_files =
|
||||
test_*.py
|
||||
tests*.py
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
# Инструменты разработки и проверок. Платформенные зависимости — в requirements.txt (не меняем).
|
||||
# Нижние границы мажорных версий: воспроизводимо, но без конфликта с пинами платформы.
|
||||
# ruff, mypy, types-PyYAML — те же версии, что в arm-statements (копия пакета проверяется конфигом хоста)
|
||||
-r requirements.txt
|
||||
ruff>=0.8
|
||||
mypy>=1.13
|
||||
ruff==0.16.10
|
||||
mypy==2.4.0
|
||||
types-PyYAML==6.0.12.20260906
|
||||
pytest>=8.3
|
||||
pytest-asyncio>=0.24
|
||||
pytest-env>=1.1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user