[project] name = "extractors" version = "0.1.0" description = "Consolidated lightweight feature-extraction service (metadata, EXIF, ELA, spectrogram, integrity; LLM-delegated sentiment/NER/OCR; object detection)" requires-python = ">=3.10" dependencies = [ "fastapi>=0.115.0,<0.116", "uvicorn[standard]>=0.32.0", "python-multipart>=0.0.9", "pydantic>=2.0", "pydantic-settings>=2.0", "httpx>=0.27.0", "pillow>=11.0", "numpy>=2.0", "prometheus-fastapi-instrumentator>=7.0.0", ] [project.optional-dependencies] # Heavy model backends (torch). Kept out of the base install so dev/CI stay # fast; the deployed image installs `.[ml]`. NER degrades to 503 without it. ml = [ "gliner>=0.2.13", "ultralytics>=8.3.0", ] dev = [ "pytest>=8.0", "pytest-cov>=4.0", "pytest-asyncio>=0.24", "ruff>=0.8", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/extractors"] [tool.ruff] extend = "../../ruff.toml" [tool.pytest.ini_options] pythonpath = ["src"] testpaths = ["tests"] asyncio_mode = "auto"