requirements.txt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # Web Framework
  2. # fastapi 0.136.x ships an undocumented `fastar` dep in its [standard]
  3. # extras group (MAL-2026-4750, surfaced by Amazon Inspector). `fastar`
  4. # is a Rust-tar binding package — no plausible reason for a web
  5. # framework to depend on it. Even if `fastar` is benign today, the
  6. # advisory's framing as a namespace-abuse / supply-chain vector is
  7. # valid: anyone controlling the `fastar` PyPI namespace gains code
  8. # execution at install time across every fastapi[standard] install.
  9. # Bambuddy doesn't request [standard], so we don't pull `fastar` in
  10. # practice, but pip-audit flags the package itself and breaks CI.
  11. # Hold to 0.135.x (which has all features we use, including SSE)
  12. # until upstream removes the dep or explains the rationale.
  13. fastapi>=0.109.0,<0.136.0
  14. uvicorn[standard]>=0.27.0
  15. # Database
  16. sqlalchemy>=2.0.0
  17. aiosqlite>=0.19.0
  18. asyncpg>=0.29.0
  19. greenlet>=3.0.0
  20. # Pydantic
  21. pydantic>=2.0.0
  22. pydantic-settings>=2.0.0
  23. # Transitive of pydantic-settings, floor-pinned to patch CVE-2026-28684 (dotenv 1.2.1)
  24. python-dotenv>=1.2.2
  25. # Bambu Lab Printer Communication
  26. paho-mqtt>=2.0.0
  27. aioftp>=0.22.0
  28. # Virtual Printer (emulates Bambu printer for slicer uploads)
  29. pyftpdlib>=2.0.0
  30. cryptography>=46.0.7
  31. # SpoolBuddy remote SSH updates (pure-Python SSH client; avoids the
  32. # OpenSSH `ssh` binary which calls getpwuid() and fails in Docker when
  33. # the container UID isn't in /etc/passwd)
  34. asyncssh>=2.18.0
  35. # 3MF Processing (standard zipfile is sufficient for Bambu 3MF files)
  36. defusedxml>=0.7.0 # Safe XML parsing (prevents XXE attacks)
  37. # Excel Export
  38. openpyxl>=3.1.0
  39. # Notifications
  40. pywebpush>=2.0.0
  41. # Utilities
  42. python-multipart>=0.0.27
  43. aiofiles>=23.0.0
  44. # QR Code generation
  45. qrcode[pil]>=7.4.0
  46. # PDF generation (spool label printing — #809)
  47. reportlab>=4.0.0
  48. # STL Thumbnail Generation
  49. trimesh>=4.0.0
  50. matplotlib>=3.8.0
  51. fast-simplification>=0.1.0
  52. # System monitoring
  53. psutil>=6.0.0
  54. # Authentication
  55. PyJWT>=2.12.0
  56. passlib[bcrypt]>=1.7.4
  57. ldap3>=2.9.0
  58. pyotp>=2.9.0
  59. # Transitive dep pin: idna<3.15 has CVE-2026-45409 (ReDoS on encode() with
  60. # crafted Unicode). Pulled in by anyio/httpx/requests/yarl; pin the floor
  61. # so we don't regress when a downstream loosens its constraint.
  62. idna>=3.15
  63. # HTTP client (used for OIDC token exchange)
  64. httpx>=0.26.0
  65. # Transitive pin: urllib3 2.6.3 has CVE-2026-44431 and CVE-2026-44432;
  66. # 2.7.0+ is the fixed release. Direct pin here because none of our
  67. # top-level deps require >=2.7.0 yet, so without this the resolver
  68. # would silently keep installing the vulnerable 2.6.x line.
  69. urllib3>=2.7.0
  70. # Transitive of fastapi. starlette 1.0.0 has PYSEC-2026-161; 1.0.1 is the
  71. # fixed release. fastapi's range still admits 1.0.0 so we pin the floor
  72. # directly to stop the resolver from picking the vulnerable build.
  73. starlette>=1.0.1
  74. # Plate Detection (optional - enables build plate empty detection)
  75. opencv-python-headless>=4.8.0
  76. numpy>=1.24.0
  77. # Development
  78. pytest>=9.0.3
  79. pytest-asyncio>=0.23.0
  80. httpx>=0.26.0
  81. ruff>=0.2.0
  82. pillow>=12.2.0