Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
81 lines (71 loc) 路 2.65 KB
/
Copy pathpyproject.toml
File metadata and controls
81 lines (71 loc) 路 2.65 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
[project]
name = "entune"
version = "0.5.1"
description = "Dictation with your choice of speech model and a personal dictionary that selects corrections in context."
readme = "README.md"
license = "MIT"
license-files = ["LICENSE"]
requires-python = ">=3.12"
dependencies = [
"cryptography>=42", # checks the signature of OpenAI's sign-in ID token (chatgpt.py)
"httpx>=0.27",
"httpx2",
"mcp>=2.3", # agents improve the dictionary over MCP (api/mcp.py); loaded on first use
"numpy",
"opentelemetry-api>=1.28", # an interrupted reply's text goes on its trace (call.py)
"pillow",
"pydantic>=2",
"pydantic-ai-slim[anthropic,google,groq,mistral,openai]>=2.54",
"pynput>=1.7,<2 ; sys_platform == 'darwin' or sys_platform == 'win32'",
"pyobjc-framework-applicationservices>=10 ; sys_platform == 'darwin'",
"pyobjc-framework-AVFoundation>=10 ; sys_platform == 'darwin'",
"pyside6>=6.7 ; sys_platform == 'linux'",
"pystray>=0.19 ; sys_platform == 'darwin' or sys_platform == 'win32'",
"python-multipart>=0.0.12",
"pywebview>=5",
"qtpy>=2 ; sys_platform == 'linux'",
"pywhispercpp>=1.5",
"sounddevice>=0.5",
"starlette>=0.41",
"uvicorn>=0.30",
]
[project.optional-dependencies]
# Opt-in Langfuse tracing of dictionary-suggestion requests (entune/app/tracing.py), sent
# to Langfuse's OpenTelemetry endpoint by Entune's own exporter.
tracing = ["opentelemetry-sdk>=1.30", "opentelemetry-exporter-otlp-proto-common>=1.30"]
[project.urls]
Homepage = "https://entune.app"
Source = "https://github.com/eandualem/entune"
Documentation = "https://github.com/eandualem/entune#readme"
Issues = "https://github.com/eandualem/entune/issues"
[project.scripts]
entune = "entune.cli:main"
[build-system]
requires = ["uv_build>=0.8"]
build-backend = "uv_build"
[dependency-groups]
build = ["pyinstaller>=6"]
dev = [
"mypy>=1.11",
"opentelemetry-exporter-otlp-proto-common>=1.30", # the tracing extra, for its tests
"opentelemetry-sdk>=1.30",
"pytest>=8",
"ruff>=0.6",
"types-pynput>=1.8.1.20260712",
]
[tool.ruff]
line-length = 100
target-version = "py312"
extend-exclude = ["packaging/Entune.spec"]
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM", "RUF"]
[tool.mypy]
strict = true
mypy_path = "src"
files = ["src/entune", "tests"]
[[tool.mypy.overrides]]
module = ["sounddevice", "objc", "Quartz", "ApplicationServices", "AppKit", "AVFoundation", "Foundation", "WebKit", "PyObjCTools", "pystray.*", "webview.*", "qtpy.*", "PIL.*", "parakeet_mlx", "parakeet_mlx.*", "mlx.*", "librosa"]
ignore_missing_imports = true
[tool.pytest.ini_options]
testpaths = ["tests"]
filterwarnings = ["ignore:The anyio.abc.BlockingPortal alias is deprecated:DeprecationWarning"]