53 lines
1.8 KiB
TOML
53 lines
1.8 KiB
TOML
[project]
|
|
name = "photoanalyzer"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"fastapi>=0.115",
|
|
"uvicorn>=0.30",
|
|
"sqlalchemy>=2.0",
|
|
"alembic>=1.13",
|
|
"pydantic>=2.7",
|
|
# Imaging is runtime, not test-only: thumbnails decode through Pillow, and the
|
|
# perceptual hash is a DCT over the decoded pixels (services/hashing.py).
|
|
"pillow>=10",
|
|
"numpy>=1.26",
|
|
"scipy>=1.11",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
# The cloud vision provider. Optional because the analysis stage is the only thing
|
|
# that needs it, and a local review-only install should not pull an API client.
|
|
vision = ["openai>=1.30"]
|
|
test = [
|
|
"pytest>=8",
|
|
"httpx>=0.27",
|
|
"playwright>=1.40",
|
|
"pytest-playwright>=0.4",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools]
|
|
# The importable application. ``migrations`` and ``work_item`` live beside it but
|
|
# are not part of the package; without this, an editable install cannot guess.
|
|
packages = ["photo_pipeline"]
|
|
# Browser end-to-end tests also require: python -m playwright install chromium
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
# The frozen CLI archive is evidence, not code under maintenance (US07-01).
|
|
extend-exclude = ["legacy_cli_archive"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
markers = [
|
|
"phase_b: Phase B end-to-end acceptance (US02-07) — API, worker-recovery, and browser journeys",
|
|
"phase_c: Phase C end-to-end acceptance (US03-05) — album proposal API and browser journeys",
|
|
"phase_d: Phase D end-to-end acceptance (US04-06) — guarded rename API, fault, and browser journeys",
|
|
"phase_e: Phase E end-to-end acceptance (US05-06) — upload preflight, uploader, and browser journeys",
|
|
"phase_f: Phase F end-to-end acceptance (US06-06) — archive destination, transfer, and restore journeys",
|
|
]
|