generated from coulomb/repo-seed
Lands the smallest credible foundation per ADR-0005:
- pyproject.toml: hatchling build, runtime deps (FastAPI, uvicorn, SQLAlchemy 2.0,
asyncpg, aiosqlite, alembic, blake3, cbor2, typer, structlog, pydantic,
pydantic-settings); dev deps (pytest, pytest-asyncio, httpx, hypothesis, ruff,
mypy); ruff + mypy --strict + pytest configured.
- uv.lock committed.
- Makefile thin shims: install / dev / test / lint / format / type / migrate / clean.
- src/artifactstore/ package skeleton with placeholder __init__.py per concern:
identity, manifest, events, retention, audit, storage, dataplane, registry,
api/http (minimal FastAPI app, GET / scaffold banner), cli (typer app with
version subcommand), config (pydantic-settings).
- tests/{unit,integration}/conftest.py present; unit smoke tests assert package
imports, HTTP root route, CLI version round-trip, settings defaults.
- .env.example documents ARTIFACTSTORE_DATABASE_URL,
ARTIFACTSTORE_STORAGE_LOCAL_ROOT, ARTIFACTSTORE_LOG_LEVEL.
- README updated with install / dev / test instructions.
- .gitignore: claude local state, local runtime data (var/, sqlite db).
make lint && make type && make test pass on a clean checkout (4 tests, 20
source files type-clean under mypy --strict).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
44 lines
1.1 KiB
Makefile
44 lines
1.1 KiB
Makefile
.PHONY: help install dev test lint format type migrate clean
|
|
|
|
help:
|
|
@echo "artifact-store — make targets"
|
|
@echo " install install / sync dependencies via uv"
|
|
@echo " dev run the FastAPI app with reload (uvicorn)"
|
|
@echo " test run the pytest suite"
|
|
@echo " lint ruff check + ruff format --check"
|
|
@echo " format ruff format (write changes)"
|
|
@echo " type mypy --strict over src and tests"
|
|
@echo " migrate alembic upgrade head (configured by WP-0001-T002)"
|
|
@echo " clean remove caches and build artefacts"
|
|
|
|
install:
|
|
uv sync --all-extras
|
|
|
|
dev:
|
|
uv run uvicorn artifactstore.api.http:app --reload --host 127.0.0.1 --port 8000
|
|
|
|
test:
|
|
uv run pytest
|
|
|
|
lint:
|
|
uv run ruff check .
|
|
uv run ruff format --check .
|
|
|
|
format:
|
|
uv run ruff format .
|
|
uv run ruff check --fix .
|
|
|
|
type:
|
|
uv run mypy
|
|
|
|
migrate:
|
|
@if [ -f alembic.ini ]; then \
|
|
uv run alembic upgrade head; \
|
|
else \
|
|
echo "alembic.ini not present yet — see ARTIFACT-STORE-WP-0001-T002"; \
|
|
fi
|
|
|
|
clean:
|
|
rm -rf .pytest_cache .mypy_cache .ruff_cache build dist *.egg-info
|
|
find . -type d -name __pycache__ -prune -exec rm -rf {} +
|