diff --git a/pyproject.toml b/pyproject.toml index 0a059ed..0613ee0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,16 +27,16 @@ classifiers = [ ] dynamic = ["version"] dependencies = [ - "PyMuPDF>=1.24.0", - "pytesseract>=0.3.10", - "Pillow>=10.0.0", - "openai>=1.40.0", - "python-dotenv>=1.0.0", - "PyYAML>=6.0", - "rich>=13.0.0", + "PyMuPDF>=1.28.0", + "pytesseract>=0.3.13", + "Pillow>=12.3.0", + "openai>=2.45.0", + "python-dotenv>=1.2.2", + "PyYAML>=6.0.3", + "rich>=15.0.0", # PDF/UA structure-tree tagging (T-004). Wheels bundle qpdf — no apt package # needed, so the air-gapped image stays self-contained. - "pikepdf>=9.0", + "pikepdf>=10.10.0", ] [project.urls] @@ -52,27 +52,27 @@ figmark-server = "figmark.api:main" # The HTTP service. Kept optional so the CLI/PyPI install stays lean; the # container image installs ".[server]". server = [ - "fastapi>=0.119,<1.0", + "fastapi>=0.139.0,<1.0", # Pin Starlette's floor directly — FastAPI's own floor (>=0.46.0) has left # known CVEs unpatched twice (CVE-2025-62727, then CVE-2026-48710/BadHost, # fixed in 1.0.1). See docs/tickets/T-009. - "starlette>=1.0.1,<2.0", - "uvicorn[standard]>=0.32,<1.0", - "python-multipart>=0.0.9,<0.1", + "starlette>=1.3.1,<2.0", + "uvicorn[standard]>=0.51.0,<1.0", + "python-multipart>=0.0.32,<0.1", ] dev = [ - "pytest>=8.0.0", - "pytest-cov>=5.0", - "mypy>=1.11", - "ruff>=0.6.0", - "httpx>=0.27", - "fastapi>=0.119,<1.0", + "pytest>=9.1.1", + "pytest-cov>=7.1.0", + "mypy>=2.3.0", + "ruff>=0.15.21", + "httpx>=0.28.1", + "fastapi>=0.139.0,<1.0", # Pin Starlette's floor directly — FastAPI's own floor (>=0.46.0) has left # known CVEs unpatched twice (CVE-2025-62727, then CVE-2026-48710/BadHost, # fixed in 1.0.1). See docs/tickets/T-009. - "starlette>=1.0.1,<2.0", - "uvicorn[standard]>=0.32,<1.0", - "python-multipart>=0.0.9,<0.1", + "starlette>=1.3.1,<2.0", + "uvicorn[standard]>=0.51.0,<1.0", + "python-multipart>=0.0.32,<0.1", ] [tool.hatch.version]