[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "howl" version = "0.1.0" description = "M365 email management daemon with LLM-powered filtering" requires-python = ">=3.11" dependencies = [ # Microsoft Graph + auth "msal>=1.31.0", "msgraph-sdk>=1.9.0", "httpx>=0.27.0", # Database "sqlalchemy>=2.0.0", "alembic>=1.13.0", "asyncpg>=0.30.0", "psycopg[binary]>=3.2.0", # LLM "anthropic>=0.40.0", # Config & validation "pydantic>=2.9.0", "pydantic-settings>=2.6.0", # CLI "typer>=0.13.0", "rich>=13.0.0", # Scheduling "apscheduler>=3.10.0", # Logging "structlog>=24.0.0", # Retry "tenacity>=9.0.0", # HTML stripping for email bodies "beautifulsoup4>=4.12.0", ] [project.scripts] howl = "howl.main:app" [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.24.0", "respx>=0.21.0", "pytest-cov>=5.0.0", ] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "integration: marks tests that require real external services (deselect with '-m not integration')", ] [tool.hatch.build.targets.wheel] packages = ["howl"]