[build-system] requires = ["hatchling>=1.25"] build-backend = "hatchling.build" [project] name = "imagefind" version = "0.5.45" description = "Private, local-first AI media library for fnOS" readme = "README.md" requires-python = ">=3.11,<3.14" license = { text = "Apache-2.0" } dependencies = [ "argon2-cffi>=23.1,<26", "anyio>=4.6,<4.9", # cryptography 45 Linux wheels require glibc 2.34; fnOS release baseline is glibc 2.28. "cryptography>=43,<45", "fastapi>=0.115,<0.119", "httpx>=0.27,<1", "pillow>=10.4,<13", "pydantic-settings>=2.6,<3", "python-multipart>=0.0.12,<1", "psycopg[binary]>=3.2,<4", "starlette>=0.40,<0.49", "uvicorn[standard]>=0.30,<1", "watchfiles>=0.24,<2", "zhconv==1.4.1", ] [project.optional-dependencies] ai = [ "numpy>=1.26,<3", "openvino>=2025.0,<2027", "optimum-intel[openvino]>=1.27,<2", "opencv-python-headless>=4.10,<5", "rapidocr-onnxruntime>=1.4,<2", "sentence-transformers[openvino]>=3.3,<6", ] dev = [ "hatchling>=1.25,<2", "pytest>=8.3,<10", "pytest-asyncio>=0.24,<2", "ruff>=0.8,<1", ] [project.scripts] imagefind = "imagefind.main:run" [tool.hatch.build.targets.wheel] packages = ["backend/imagefind"] [tool.pytest.ini_options] pythonpath = ["backend"] testpaths = ["tests"] [tool.ruff] line-length = 120 target-version = "py311" extend-exclude = [".fnos-build-tools"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"]