pyproject.toml 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. [build-system]
  2. requires = ["setuptools>=68.0"]
  3. build-backend = "setuptools.backends._legacy:_Backend"
  4. [project]
  5. name = "peft-finetune-platform"
  6. version = "0.1.0"
  7. description = "PEFT-based fine-tuning platform with frontend-backend separation"
  8. requires-python = ">=3.10"
  9. dependencies = [
  10. "fastapi>=0.115.0",
  11. "uvicorn[standard]>=0.30.0",
  12. "pydantic>=2.0",
  13. "pydantic-settings>=2.0",
  14. "python-dotenv>=1.0",
  15. "sqlalchemy[asyncio]>=2.0",
  16. "aiosqlite>=0.20.0",
  17. "alembic>=1.13.0",
  18. "python-multipart>=0.0.9",
  19. "websockets>=12.0",
  20. # ML stack
  21. "torch>=2.4.0",
  22. "transformers>=4.45.0",
  23. "peft>=0.13.0",
  24. "trl>=0.12.0",
  25. "datasets>=3.0.0",
  26. "accelerate>=1.0.0",
  27. "bitsandbytes>=0.44.0",
  28. "scipy>=1.14.0",
  29. "scikit-learn>=1.5.0",
  30. "pillow>=10.4.0",
  31. ]
  32. [project.optional-dependencies]
  33. unsloth = ["unsloth"]
  34. openclip = ["open-clip-torch"]
  35. dev = [
  36. "pytest>=8.0",
  37. "pytest-asyncio>=0.23",
  38. "httpx>=0.27",
  39. "ruff>=0.6.0",
  40. ]
  41. [tool.setuptools.packages.find]
  42. where = ["backend"]
  43. include = ["app*"]
  44. [tool.ruff]
  45. target-version = "py310"
  46. line-length = 120
  47. [tool.ruff.lint]
  48. select = ["E", "F", "I", "N", "W"]
  49. ignore = ["E501"]
  50. [tool.pytest.ini_options]
  51. asyncio_mode = "auto"
  52. testpaths = ["backend/tests"]