[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"]