mama/pyproject.toml
warnason a84b32d6b0 Rescan idempotency + mama-dev (reset, stats)
- observations now keyed by (path, mtime) for idempotent rescans
- new index ix_observations_path_mtime
- mama-dev reset: truncate all data, schema kept
- mama-dev stats: overview, breakdowns by source_kind/status/hostname/MIME, largest blobs
2026-05-25 21:19:30 +02:00

61 lines
1.1 KiB
TOML

[project]
name = "mama"
version = "0.1.0"
description = "Media Archive Meets Automation"
readme = "README.md"
license = { file = "LICENSE" }
requires-python = ">=3.13"
authors = [
{ name = "warnason" },
]
dependencies = [
# Database
"sqlalchemy[asyncio]>=2.0.30",
"asyncpg>=0.30",
"alembic>=1.13",
# Config & validation
"pydantic>=2.8",
# Hashing & file inspection
"blake3>=1.0",
"python-magic>=0.4.27",
"pyexiftool>=0.5.6",
# CLI
"typer>=0.12",
"rich>=13.7",
]
[project.scripts]
mama-scan = "mama.cli.scan:main"
mama-apply = "mama.cli.apply:main"
mama-web = "mama.cli.web:main"
mama-dev = "mama.cli.dev:main"
[dependency-groups]
dev = [
"ruff>=0.6",
"mypy>=1.11",
"pytest>=8.3",
"pytest-asyncio>=0.24",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/mama"]
[tool.ruff]
line-length = 100
target-version = "py313"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "SIM", "RUF"]
[tool.mypy]
python_version = "3.13"
strict = true
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]