5.4 KiB
Raw Blame History

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