pyproject.toml 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. [build-system]
  2. requires = ["hatchling"]
  3. build-backend = "hatchling.build"
  4. [project]
  5. name = "stt-daemon"
  6. version = "0.1.0"
  7. description = "Always-on speech-to-text daemon with pre-roll buffer and a voice assistant layer"
  8. readme = "README.md"
  9. license = "ISC"
  10. license-files = ["LICENSE.md"]
  11. requires-python = ">=3.11"
  12. authors = [{name = "Efren", email = "efren@example.com"}]
  13. dependencies = [
  14. "numpy>=1.26",
  15. "faster-whisper>=1.1.0",
  16. "webrtcvad-wheels>=2.0.14",
  17. "questionary>=2.0",
  18. "textual>=0.80",
  19. # Vendored local CUDA build (cp313-only); see docs/PYWHISPERCPP.md.
  20. "pywhispercpp>=1.5.1 ; python_full_version == '3.13.*'",
  21. ]
  22. [project.optional-dependencies]
  23. portaudio = ["sounddevice>=0.4.6"]
  24. # In-process Laya multilingual triage lane: `uv sync --extra triage`, pinned in [tool.uv.sources].
  25. triage = ["laya"]
  26. [dependency-groups]
  27. dev = ["pytest>=8", "ruff"]
  28. [tool.uv.sources]
  29. pywhispercpp = { path = "vendor/pywhispercpp-1.5.1-cp313-cp313-linux_x86_64.whl" }
  30. laya = { git = "https://github.com/NandhaKishorM/laya.git", rev = "970dc8c5f63d7b886a68409493f37d569424f933" }
  31. [project.scripts]
  32. stt-daemon = "stt_daemon.cli:main"
  33. stt-assistant = "stt_daemon.assistant.runner:main"
  34. stt-ctl = "stt_daemon.ctl:main"
  35. stt-tui = "stt_daemon.tui.app:main"
  36. [tool.hatch.build.targets.wheel]
  37. packages = ["src/stt_daemon"]
  38. [tool.ruff]
  39. target-version = "py311"
  40. line-length = 100
  41. [tool.ruff.lint]
  42. select = ["E", "F", "W"]
  43. [tool.pytest.ini_options]
  44. testpaths = ["tests"]
  45. python_files = ["test_*.py"]