[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "receiptwitness" version = "0.1.0" description = "CartSnitch receipt/purchase history ingestion service" requires-python = ">=3.12" dependencies = [ "cartsnitch-common>=0.1.0", "playwright>=1.49,<2.0", "playwright-stealth>=1.0,<2.0", "cryptography>=46.0,<47.0", "fastapi>=0.115,<1.0", "uvicorn[standard]>=0.30,<1.0", "beautifulsoup4>=4.12,<5.0", "redis>=5.0,<6.0", "pydantic>=2.0,<3.0", "pydantic-settings>=2.0,<3.0", "sqlalchemy[asyncio]>=2.0,<3.0", "asyncpg>=0.29,<1.0", "resend>=2.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "ruff>=0.3", "pytest-cov>=5.0", "fakeredis[aioredis]>=2.20", "httpx>=0.27", "python-multipart>=0.0.9", ] [tool.hatch.build.targets.wheel] packages = ["src/receiptwitness"] [tool.ruff] target-version = "py312" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] [tool.mypy] python_version = "3.12" strict = false warn_return_any = true warn_unused_ignores = true [[tool.mypy.overrides]] module = "cartsnitch_common.*" ignore_missing_imports = true [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]