5.4 KiB
Spec Delta
Purpose
Поставка общей нормализации форм как устанавливаемой библиотеки с правилами и идентификатором версии, доступной ядру без встроенной копии исходников.
ADDED Requirements
Requirement: Установка локальной библиотеки
Команда make install SHALL устанавливать или переустанавливать дистрибутив pylib-ai-arm-statements в окружение backend api/.venv из соседнего репозитория ../pylib_ai_arm_statements. Путь SHALL переопределяться через STATEMENTS_DIR. При отсутствии окружения команда SHALL создавать его на Python 3.11.
Scenario: Повторная установка после изменения библиотеки
- WHEN разработчик выполняет
make installпосле изменения исходников или YAML-правил локальной библиотеки - THEN backend получает обновлённую библиотеку, даже если номер версии дистрибутива не изменён
Scenario: Другой путь к исходникам
- WHEN разработчик выполняет
make install STATEMENTS_DIR=/tmp/local-statements - THEN библиотека устанавливается из указанного каталога в окружение backend
Requirement: Подготовка окружения разработки
При установке api/requirements.txt команда make venv SHALL пропускать строки с префиксами raisa_ и pylib_ai. Обработка requirements-dev.txt SHALL сохраняться: исключаются вложенные строки -r. После установки requirements локальная библиотека SHALL устанавливаться в окружение backend.
Scenario: Внутренний пакет не запрашивается из реестра
- WHEN requirements содержит
pylib_ai_arm_statements==0.1.1и выполняетсяmake venv - THEN этот пакет не запрашивается из реестра по requirements и устанавливается из локального репозитория
Requirement: Совместимость импортов и ресурсов
Установленная библиотека SHALL предоставлять импорт arm_statements и необходимые YAML-правила. Нормализация и загрузка стандартных правил MUST работать без каталога api/arm_statements/ и без обращения к исходникам соседнего репозитория во время исполнения.
Scenario: Стандартные правила из установленного пакета
- WHEN установлен собранный дистрибутив и backend загружает стандартные правила
- THEN
statement_checks.yamlи остальные необходимые YAML доступны внутри пакета; ошибка отсутствующего файла не возникает
Requirement: Версия установленной библиотеки
Версия библиотеки SHALL определяться непустым стандартным маркером VERSION, а при его отсутствии или пустом содержимом — метаданными дистрибутива pylib-ai-arm-statements. Если оба источника недоступны, результат SHALL быть None. Явно переданный отсутствующий или пустой файл SHALL возвращать None без подстановки метаданных.
Scenario: Пакет без внутреннего VERSION
- WHEN у установленного дистрибутива версии
0.1.1нет внутреннегоVERSION - THEN версия библиотеки равна
0.1.1, а неNone
Scenario: Приоритет маркера
- WHEN внутренний
VERSIONсодержит непустой идентификатор, а метаданные содержат версию дистрибутива - THEN возвращается идентификатор из
VERSIONбез окружающих пробелов
Scenario: Явно указанный файл отсутствует
- WHEN вызывающий передаёт путь к отсутствующему файлу версии
- THEN возвращается
None, даже если дистрибутив установлен
Scenario: Пустой стандартный маркер
- WHEN стандартный
VERSIONпуст, но метаданные дистрибутива доступны - THEN возвращается версия дистрибутива
Scenario: Нет доступного идентификатора
- WHEN стандартного маркера и метаданных дистрибутива нет
- THEN возвращается
None