pyproject.toml
Rama main · réplica de lectura del repositorio original.
# Lenovmail — authored by satuapps (satuapps.com)
[project]
name = "lenovmail"
version = "0.1.0"
description = "Multi-account mail infrastructure: IMAP + Microsoft Graph, web GUI, MCP agent API"
authors = [{ name = "satuapps" }]
requires-python = ">=3.13,<3.14"
dependencies = [
"fastapi>=0.141,<0.142",
"uvicorn[standard]>=0.53,<0.54",
"sqlalchemy[asyncio]>=2.0,<2.1",
"alembic>=1.20,<1.21",
"asyncpg>=0.31,<0.32",
"pydantic-settings>=2.0,<3",
"arq>=0.28,<0.29",
"redis>=5.2,<6",
"imapclient>=4.1,<4.2",
"aiosmtplib>=5.1,<5.2",
"httpx>=0.28,<0.29",
"msal>=1.39,<2",
"cryptography>=50,<51",
"argon2-cffi>=25,<26",
"dnspython>=2.8,<3",
"nh3>=0.3,<0.4",
"structlog>=25,<27",
"typer>=0.20,<1",
"mcp>=2.2,<3",
"pyyaml>=6,<7",
]
[project.scripts]
lenovmail = "lenovmail.cli:app"
[dependency-groups]
dev = [
"pytest>=8",
"pytest-asyncio>=1.4",
"ruff>=0.16",
"mypy>=1.14",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/lenovmail"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
filterwarnings = ["ignore::DeprecationWarning"]
[tool.ruff]
line-length = 100
target-version = "py313"
src = ["src", "tests"]
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "ASYNC", "C4", "SIM"]
ignore = ["B008", "SIM108"]
[tool.mypy]
python_version = "3.13"
mypy_path = "src"
packages = ["lenovmail"]
ignore_missing_imports = true
check_untyped_defs = true