Архитектура
Раскладка исходного кода
Почему Apothem использует раскладку src/ и как организовано дерево.
Apothem принял src-layout от PyPA, разместив весь импортируемый код на Python под src/apothem/.
Почему src-layout
- Изоляция импорта.
import apothemразрешается, только когдаsrc/находится в пути (движок запускается какPYTHONPATH=src python -m apothem), что предотвращает случайный импорт рабочего дерева из постороннего каталога. - Самодостаточная среда выполнения. Apothem запускается прямо из чекаута, а его
зависимости вендорены под
src/apothem/_vendor/— шаг установки не требуется. src-layout чётко отделяет эту импортируемую поверхность от инструментария, тестов и скриптов репозитория. - Чистый дистрибутив. Та же раскладка даёт корректно сформированные sdist и wheel
(и необязательную редактируемую установку
pip install -e .), содержимое которых в точности совпадает с тем, что поставляется, без просачивания посторонних модулей верхнего уровня.
Структура дерева
src/apothem/
agents/ persistent agent definitions (*.md)
audit/ inventory and provenance tools
benchmarks/ performance benchmarks
cli/ Click CLI (top-level commands listed below the tree)
commands/ slash command definitions (*.md)
conformity/ mechanical gate checkers (*_grep.py)
harnesses/ one sub-package per harness adapter (17 adapters)
hooks/ hook dispatcher + message files
lib/ shared Python library
output-styles/ output-style definitions (*.md)
rules/ behavioral rules (*.md)
schemas/ YAML/JSON schemas
skills/ reusable skill templates (folder/SKILL.md)
statuslines/ status-line config (*.json)
templates/ reusable template artifactsКоманды CLI
Приведённый ниже список генерируется из дерева команд Click.
The cli/ package registers 14 top-level commands:
apothem backupsapothem completionapothem diffapothem doctorapothem harnessesapothem installapothem migrate-workspaceapothem profileapothem quickstartapothem rollbackapothem statusapothem uninstallapothem updateapothem verify
Импортируемые артефакты и артефакты конфигурации
Многие элементы под src/apothem/ — это конфигурационные артефакты в формате
Markdown, а не модули Python. Импортируемая поверхность Python:
src/apothem/cli/(Click CLI, доступный как точка входаapothem)src/apothem/harnesses/(17 суб-пакетов адаптеров окружений)src/apothem/lib/(общая библиотека: профиль, реестр, материализатор, распространение)src/apothem/hooks/(dispatch.py, lib/)src/apothem/conformity/(механические grep-скрипты)src/apothem/audit/(скрипты инвентаризации)src/apothem/benchmarks/(драйверы тестов производительности)