[project] name = "nexapantry-backend" version = "0.1.0" description = "Self-hosted pantry management backend" requires-python = ">=3.12" dependencies = [ "fastapi>=0.115.0", "uvicorn[standard]>=0.30.0", "sqlalchemy>=2.0.30", "psycopg[binary]>=3.2.0", "pydantic-settings>=2.4.0", "python-jose[cryptography]>=3.3.0", "passlib[argon2]>=1.7.4", "python-multipart>=0.0.9", "cryptography>=42.0.0", "httpx>=0.27.0", "email-validator>=2.2.0", "redis>=5.0.0", "tenacity>=8.5.0" ] [project.optional-dependencies] dev = [ "pytest>=8.2.0", "pytest-cov>=5.0.0", "ruff>=0.5.0", "mypy>=1.10.0", "bandit>=1.7.9", "pip-audit>=2.7.0", "types-python-jose>=3.3.4", "types-passlib>=1.7.7" ] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "S"] ignore = ["B008", "E501", "S101", "S105"] [tool.pytest.ini_options] testpaths = ["app/tests"]