# Pinned dependency set — the "locked" CI lane installs with
#     pip install -e ".[test,vision,web]" -c constraints.txt
#
# Why this file exists: this repo's own venv was sitting on mcp 1.28 and PyMuPDF
# 1.28.0 while a clean resolve produced mcp 2.0 and PyMuPDF 1.28.2 — two
# releases that respectively removed an imported module and started printing to
# stdout. Every test passed on the machine that had the old ones. A locked lane
# makes CI reproducible; the UNPINNED lane (the default `python` job) stays as
# the early warning that upstream has moved. Both must be green to release.
#
# Regenerate: create a clean venv, `pip install ".[test,vision,web]"`, then
# `pip freeze --exclude-editable`.
annotated-doc==0.0.5
annotated-types==0.8.0
anthropic==0.121.0
anyio==4.14.2
attrs==26.1.0
certifi==2026.7.22
cffi==2.1.1
click==8.4.2
colorama==0.4.6
coverage==7.15.4
cryptography==50.0.0
distro==1.9.0
docstring_parser==0.18.0
fastapi==0.141.1
h11==0.16.0
httpcore==1.0.9
httpcore2==2.10.0
httpx==0.28.1
httpx2==2.10.0
idna==3.18
iniconfig==2.3.0
jieba==0.42.1
jiter==0.16.0
json_repair==0.63.1
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
lxml==6.1.1
markdown-it-py==4.2.0
mcp==2.0.0
mcp-types==2.0.0
mdurl==0.1.2
odfdo==3.24.3
openai==3.0.0
opentelemetry-api==1.44.0
packaging==26.3
pluggy==1.6.0
pycparser==3.0
pydantic==2.13.4
pydantic_core==2.46.4
Pygments==2.20.0
PyJWT==2.13.0
pymupdf==1.28.2
pytest==9.1.1
pytest-cov==7.1.0
python-dotenv==1.2.2
python-multipart==0.0.32
pywin32==312
referencing==0.37.0
rich==15.0.0
rpds-py==2026.6.3
shellingham==1.5.4
sniffio==1.3.1
sse-starlette==3.4.8
starlette==1.6.0
tqdm==4.70.0
truststore==0.10.4
typer==0.27.1
typing-inspection==0.4.4
typing_extensions==4.16.0
uvicorn==0.52.2
zhconv==1.4.3
