Files
local-transcription/pyproject.toml
jknapp e77303f793 Document why we override enum34 dependency
Added detailed comments explaining the enum34 override:
- RealtimeSTT uses pvporcupine 1.9.5 (last open-source version)
- pvporcupine 1.9.5 depends on enum34
- enum34 is incompatible with PyInstaller
- We don't use wake word features, so enum34 is unnecessary
- enum is in stdlib since Python 3.4

This provides context for future maintainers about why the override exists.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-28 19:44:14 -08:00

95 lines
2.6 KiB
TOML

[project]
name = "local-transcription"
version = "0.1.0"
description = "A standalone desktop application for real-time speech-to-text transcription using Whisper models"
readme = "README.md"
requires-python = ">=3.9"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "your.email@example.com"}
]
keywords = ["transcription", "speech-to-text", "whisper", "streaming", "obs"]
dependencies = [
"numpy>=1.24.0",
"pyyaml>=6.0",
"sounddevice>=0.4.6",
"scipy>=1.10.0",
"torch>=2.0.0",
"PySide6>=6.6.0",
# RealtimeSTT for advanced VAD-based transcription
"RealtimeSTT>=0.3.0",
# Web server (always-running for OBS integration)
"fastapi>=0.104.0",
"uvicorn>=0.24.0",
"websockets>=12.0",
# Server sync client
"requests>=2.31.0",
]
[project.optional-dependencies]
# Kept for backwards compatibility, but server deps are now in main dependencies
server = [
"fastapi>=0.104.0",
"uvicorn>=0.24.0",
"websockets>=12.0",
"requests>=2.31.0",
]
dev = [
"pytest>=7.4.0",
"black>=23.0.0",
"ruff>=0.1.0",
]
[project.scripts]
local-transcription = "main:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["client", "gui"]
[dependency-groups]
dev = [
"pyinstaller>=6.17.0",
]
# Add PyTorch CUDA index as additional source
# CUDA builds work on both GPU and CPU systems (fallback to CPU if no GPU)
# Using 'explicit = true' means only packages we explicitly specify use this index
[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
# Tell uv to get torch, torchvision, and torchaudio from the PyTorch CUDA index
# All other packages come from PyPI
[tool.uv.sources]
torch = { index = "pytorch-cu121" }
torchvision = { index = "pytorch-cu121" }
torchaudio = { index = "pytorch-cu121" }
# Override enum34 dependency to only install on Python < 3.4
# (which effectively never happens since we require Python >= 3.9)
#
# Background: RealtimeSTT depends on pvporcupine==1.9.5 (the last fully open-source
# version before 2.0+ required an access key). pvporcupine 1.9.5 depends on enum34,
# which is an obsolete Python 2.7/3.3 backport that's incompatible with PyInstaller.
#
# Since enum is part of Python stdlib since 3.4, and we don't use wake word features
# from pvporcupine (it's just an indirect dependency), we can safely skip enum34.
[tool.uv]
override-dependencies = [
"enum34; python_version < '3.4'"
]
[tool.ruff]
line-length = 100
target-version = "py39"
[tool.black]
line-length = 100
target-version = ["py39"]