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/**` — регрессия, не спецификация формата:
|
в коде. Словари синонимов — `rules/*.yaml`. Фикстуры `../fixtures/osv/**` — регрессия, не спецификация формата:
|
||||||
новый формат = новая фикстура + синоним, не новый `if`.
|
новый формат = новая фикстура + синоним, не новый `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/**`; для пакета ДКБ
|
- property-тесты инвариантов (§1.4) на всех файлах `../fixtures/osv/**` и `../fixtures/statements-xlsx/**`; для пакета ДКБ
|
||||||
`../fixtures/osv-dkb/**` — `tests/fixtures/test_osv_dkb.py`: ожидаемые `needs_check` — манифест
|
`../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
|
BIN := $(CURDIR)/$(VENV)/bin
|
||||||
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
|
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_* вне банка недоступны — пропускаем их
|
# Python 3.11 (версия платформы); внутренние пакеты raisa_* вне банка недоступны — пропускаем их
|
||||||
venv:
|
venv:
|
||||||
@ -14,7 +14,7 @@ venv:
|
|||||||
lint:
|
lint:
|
||||||
cd api && $(BIN)/ruff check .
|
cd api && $(BIN)/ruff check .
|
||||||
cd api && $(BIN)/ruff format --check .
|
cd api && $(BIN)/ruff format --check .
|
||||||
cd api && $(BIN)/mypy src
|
cd api && $(BIN)/mypy src arm_statements
|
||||||
|
|
||||||
test:
|
test:
|
||||||
cd api && $(BIN)/pytest -m "not integration"
|
cd api && $(BIN)/pytest -m "not integration"
|
||||||
@ -42,8 +42,17 @@ docker-build:
|
|||||||
docker build -t tabular-parser .
|
docker build -t tabular-parser .
|
||||||
|
|
||||||
# Полная проверка перед PR: быстрые проверки, затем NATS/MinIO из compose (make up), затем образ
|
# Полная проверка перед 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
|
# Только инфраструктура, нужная сервису (без arm-core): NATS и MinIO; postgres — для общей среды compose
|
||||||
up:
|
up:
|
||||||
docker compose -f $(COMPOSE_FILE) up -d --wait postgres nats minio
|
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"]
|
select = ["E", "F", "I", "UP", "B", "PL"]
|
||||||
|
|
||||||
[tool.ruff.lint.isort]
|
[tool.ruff.lint.isort]
|
||||||
known-first-party = ["src"]
|
known-first-party = ["src", "arm_statements"]
|
||||||
|
|
||||||
[tool.mypy]
|
[tool.mypy]
|
||||||
python_version = "3.11"
|
python_version = "3.11"
|
||||||
@ -38,3 +38,19 @@ ignore_missing_imports = true
|
|||||||
[[tool.mypy.overrides]]
|
[[tool.mypy.overrides]]
|
||||||
module = ["src.parser", "src.parser.*"]
|
module = ["src.parser", "src.parser.*"]
|
||||||
disallow_untyped_defs = true
|
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 = .
|
pythonpath = .
|
||||||
testpaths =
|
testpaths =
|
||||||
tests
|
tests
|
||||||
|
arm_statements/tests
|
||||||
python_files =
|
python_files =
|
||||||
test_*.py
|
test_*.py
|
||||||
tests*.py
|
tests*.py
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
# Инструменты разработки и проверок. Платформенные зависимости — в requirements.txt (не меняем).
|
# Инструменты разработки и проверок. Платформенные зависимости — в requirements.txt (не меняем).
|
||||||
# Нижние границы мажорных версий: воспроизводимо, но без конфликта с пинами платформы.
|
# Нижние границы мажорных версий: воспроизводимо, но без конфликта с пинами платформы.
|
||||||
|
# ruff, mypy, types-PyYAML — те же версии, что в arm-statements (копия пакета проверяется конфигом хоста)
|
||||||
-r requirements.txt
|
-r requirements.txt
|
||||||
ruff>=0.8
|
ruff==0.16.10
|
||||||
mypy>=1.13
|
mypy==2.4.0
|
||||||
|
types-PyYAML==6.0.12.20260906
|
||||||
pytest>=8.3
|
pytest>=8.3
|
||||||
pytest-asyncio>=0.24
|
pytest-asyncio>=0.24
|
||||||
pytest-env>=1.1
|
pytest-env>=1.1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user