# Document upload (Phase 9). SEPARATE FROM requirements.txt ON PURPOSE. # # Installed in its own layer, AFTER the main one. A change here therefore does # not invalidate the cached layer carrying fastapi, langgraph, langfuse and the # rest - so adding or bumping a document dependency costs a few megabytes of # pure-Python wheels instead of re-resolving the whole tree on a 2 vCPU host # that also runs the demo plant's PLC. # # All four are PURE PYTHON: no compiler runs, no native extension is built. # # These extract text, not layout, and cannot read a scan. api/convert.py says # what that costs and why review is what makes it acceptable. Anything heavier - # in particular anything pulling torch - does not belong in this file; it # belongs in an image built somewhere other than lin001. python-multipart==0.0.20 pypdf==5.1.0 python-docx==1.1.2 openpyxl==3.1.5