[project] name = "faceverification" version = "0.1.0" description = "Face verification demo using FaceNet embeddings, ChromaDB vector search, and CI/CD pipeline." readme = "README.md" requires-python = ">=3.11,<3.14" dependencies = [ "numpy>=1.24,<2.0", "datasets>=4.8.5", "facenet-pytorch>=2.5.3", "gradio>=6.14.0", "huggingface-hub>=1.14.0", "python-dotenv>=1.2.2", "pydantic>=2.11.10,<=2.12.5", "pydantic-settings>=2.14.1", "chromadb>=1.5.9", "fastapi>=0.136.1", "pyjwt>=2.10.1", "python-multipart>=0.0.28", "uvicorn[standard]>=0.46.0", "torch>=2.12.0", "torchvision>=0.27.0", ] [project.scripts] faceverification = "faceverification.interfaces.gradio_app:main" [build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] where = ["src"] [tool.uv.sources] torch = { index = "pytorch-cpu" } torchvision = { index = "pytorch-cpu" } [[tool.uv.index]] name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true [tool.pytest.ini_options] pythonpath = ["src"] testpaths = ["test"] python_files = ["test_*.py"] markers = [ "integration: tests that use real external components or models", "e2e: end-to-end tests that exercise complete application workflows", ] [tool.ruff] line-length = 100 target-version = "py311" src = ["src", "test"] [tool.ruff.lint] select = ["E", "F", "I", "B", "UP", "SIM"] [dependency-groups] dev = [ "pytest>=9.0.3", "pytest-cov>=7.1.0", "ruff>=0.15.13", ]