-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathpyproject.toml
More file actions
103 lines (96 loc) · 3.52 KB
/
Copy pathpyproject.toml
File metadata and controls
103 lines (96 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
[project]
name = "talktrack"
version = "0.1.0"
description = "Record, transcribe, and diarize audio from calls (Teams, Zoom, etc.) on Windows."
requires-python = ">=3.10"
# Heavy ML/numerical deps carry an upper bound capping the next major version,
# where breaking changes concentrate (e.g. the numpy 1->2, transformers 4->5
# jumps). This blocks a future `uv lock` or a plain-pip install from silently
# pulling an untested major, while still allowing minor/patch updates. The
# current locked versions all sit under these caps. (issue #4)
dependencies = [
"comtypes>=1.2.0",
"faster-whisper>=1.0.0,<2",
"numpy>=1.24.0,<3",
"psutil>=5.9.0",
"pyannote-audio>=4.0.0,<5",
"pyaudiowpatch>=0.2.12",
"pycaw>=20230407",
"pydub>=0.25.1",
"pyqt6>=6.6.0",
"pywin32>=306",
"scipy>=1.11.0,<2",
"sentence-transformers>=3.0.0,<6",
"sounddevice>=0.4.6",
"soundfile>=0.12.0",
"transformers>=4.45.0,<6",
]
# NOTE: torch/torchaudio are intentionally NOT in base dependencies. They are
# split into mutually-exclusive `cpu` and `cuda` extras (see below) so uv can
# lock a CPU build and a CUDA build separately. Pick exactly one when syncing:
# uv sync --extra cpu (default, no GPU needed)
# uv sync --extra cuda (NVIDIA GPU acceleration, CUDA 12.6)
[project.optional-dependencies]
# Optional AI assistant providers. Install only what you use, e.g.
# uv sync --extra claude (or) pip install ".[claude]"
# These are also installed on demand from Settings > AI when a provider
# is first selected; declaring them here keeps versions pinned and lockable.
claude = ["anthropic>=0.40.0"]
openai = ["openai>=1.50.0"]
grok = ["openai>=1.50.0"] # Grok (xAI) uses the OpenAI-compatible SDK
gemini = ["google-generativeai>=0.8.0"]
mistral = ["mistralai>=1.0.0"]
local = ["llama-cpp-python>=0.3.0"]
all-ai = [
"anthropic>=0.40.0",
"openai>=1.50.0",
"google-generativeai>=0.8.0",
"mistralai>=1.0.0",
"llama-cpp-python>=0.3.0",
]
# PyTorch builds, mutually exclusive (enforced by [tool.uv] conflicts below).
# `cpu` = CPU-only wheels (works on any machine, no NVIDIA card required).
# `cuda` = CUDA 12.6 wheels for NVIDIA GPU acceleration of transcription and
# diarization. CUDA 12.6 matches the GPU Acceleration check in
# dependency_checker.py. Plain-pip equivalent for GPU:
# pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu126
cpu = [
"torch>=2.0.0,<3",
"torchaudio>=2.0.0,<3",
]
cuda = [
"torch>=2.0.0,<3",
"torchaudio>=2.0.0,<3",
]
[tool.uv]
# TalkTrack is a runnable application (main.py), not an importable library,
# so uv should manage the environment without trying to build/install the project.
package = false
# CPU and CUDA torch can't coexist — force callers to pick one extra.
conflicts = [
[{ extra = "cpu" }, { extra = "cuda" }],
]
# Route torch/torchaudio to the right PyTorch index per extra. `explicit = true`
# means these indexes serve ONLY packages pinned to them here, never general
# resolution, so other dependencies still come from PyPI.
[tool.uv.sources]
torch = [
{ index = "pytorch-cpu", extra = "cpu" },
{ index = "pytorch-cu126", extra = "cuda" },
]
torchaudio = [
{ index = "pytorch-cpu", extra = "cpu" },
{ index = "pytorch-cu126", extra = "cuda" },
]
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true
[dependency-groups]
dev = [
"pytest>=9.1.1",
]