[project] name = "nexapantry-backend" version = "0.1.0" description = "Self-hosted pantry management backend" requires-python = ">=3.12" dependencies = [ "fastapi>=0.136.3", "uvicorn[standard]>=0.49.0", "sqlalchemy>=2.0.30", "psycopg[binary]>=3.2.0", "pydantic-settings>=2.4.0", "python-jose[cryptography]>=3.5.0", "passlib[argon2]>=1.7.4", "python-multipart>=0.0.27", "cryptography>=46.0.7", "httpx>=0.27.0", "email-validator>=2.2.0", "redis>=5.0.0", "tenacity>=8.5.0", "starlette>=1.0.1", "ecdsa>=0.19.2", "idna>=3.15", "pyasn1>=0.6.3", "python-dotenv>=1.2.2" ] [project.optional-dependencies] dev = [ "pytest>=8.2.0", "pytest-cov>=5.0.0", "ruff>=0.5.0", "mypy>=1.10.0", "bandit>=1.9.4", "pip-audit>=2.10.0", "mako>=1.3.12", "PyJWT>=2.13.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"]