Skip to content

Commit 6234371

Browse files
committed
chore: uv to LSP
1 parent f7f50f7 commit 6234371

9 files changed

Lines changed: 435 additions & 52 deletions

File tree

.zed/settings.json

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
{
2+
"terminal": {
3+
"shell": "system"
4+
},
5+
"file_types": {
6+
"env": [".env", ".env.*"],
7+
"shell": [".envrc"]
8+
},
9+
"use_autoclose": true,
10+
"enable_language_server": true,
11+
"formatter": "language_server",
12+
"prettier": {
13+
"allowed": false
14+
},
15+
"format_on_save": "on",
16+
"load_direnv": "shell_hook",
17+
"use_auto_surround": true,
18+
"show_completions_on_input": true,
19+
"show_completion_documentation": true,
20+
"semantic_tokens": "combined",
21+
"inlay_hints": {
22+
"enabled": true,
23+
"show_type_hints": true,
24+
"show_other_hints": true,
25+
"show_parameter_hints": true
26+
},
27+
"languages": {
28+
"Pkl": {
29+
"language_servers": ["pkl"]
30+
},
31+
"TOML": {
32+
"format_on_save": "on",
33+
"language_servers": ["tombi"],
34+
"show_edit_predictions": false,
35+
"formatter": {
36+
"language_server": { "name": "tombi" }
37+
}
38+
},
39+
"Python": {
40+
"code_actions_on_format": {
41+
"source.fixAll.ruff": true,
42+
"source.organizeImports.ruff": true
43+
},
44+
"format_on_save": "on",
45+
"language_servers": ["ruff", "pyrefly", "!pyright", "!pylsp"],
46+
"formatter": {
47+
"language_server": {
48+
"name": "ruff"
49+
}
50+
}
51+
},
52+
"Markdown": {
53+
"format_on_save": "on",
54+
"language_servers": ["oxfmt", "oxlint", "markdown-oxide"],
55+
"formatter": [
56+
{
57+
"language_server": {
58+
"name": "oxfmt"
59+
}
60+
}
61+
]
62+
},
63+
"YAML": {
64+
"language_servers": ["oxfmt", "yaml-language-server"],
65+
"formatter": [
66+
{
67+
"language_server": {
68+
"name": "oxfmt"
69+
}
70+
}
71+
]
72+
},
73+
"JSON": {
74+
"format_on_save": "on",
75+
"language_servers": ["json-language-server", "oxfmt", "oxlint"],
76+
"formatter": [
77+
{
78+
"language_server": {
79+
"name": "oxfmt"
80+
}
81+
}
82+
]
83+
},
84+
"JSONC": {
85+
"format_on_save": "on",
86+
"language_servers": ["json-language-server", "oxfmt", "oxlint"],
87+
"formatter": [
88+
{
89+
"language_server": {
90+
"name": "oxfmt"
91+
}
92+
}
93+
]
94+
}
95+
},
96+
"lsp": {
97+
"ruff": {
98+
"fetch": {
99+
"pre_release": true
100+
},
101+
"initialization_options": {
102+
"settings": {
103+
"lineLength": 80,
104+
"lint": {
105+
"extendSelect": ["I"]
106+
}
107+
}
108+
}
109+
},
110+
"pyrefly": {
111+
"fetch": {
112+
"pre_release": true
113+
},
114+
"binary": {
115+
"arguments": ["lsp"]
116+
}
117+
},
118+
"pkl": {
119+
"fetch": { "pre_release": true },
120+
"binary": { "ignore_system_version": false }
121+
},
122+
"tombi": {
123+
"fetch": { "pre_release": true },
124+
"binary": {
125+
"arguments": ["lsp", "-v"],
126+
"env": { "NO_COLOR": "true" },
127+
"ignore_system_version": false
128+
}
129+
},
130+
"gopls": {
131+
"binary": {
132+
"ignore_system_version": false
133+
}
134+
}
135+
},
136+
"hidden_files": [
137+
"!**/_/**",
138+
".crush",
139+
".pi",
140+
"**/.vscode",
141+
"**/.git",
142+
"**/.venv",
143+
"**/__pycache__",
144+
".direnv",
145+
".ruff_cache",
146+
".DS_Store",
147+
"result",
148+
"**/.wrangler",
149+
"**/.ruff_cache",
150+
"**/*.egg-info"
151+
],
152+
"file_scan_exclusions": [
153+
".crush",
154+
".direnv",
155+
".DS_Store",
156+
"**/*.egg-info",
157+
"result",
158+
".pi",
159+
"**/.brew",
160+
"**/.vscode",
161+
"**/.git",
162+
"**/.venv",
163+
"**/.wrangler",
164+
"**/.ruff_cache",
165+
"**/__pycache__"
166+
]
167+
}

mise.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ color_theme = "charm"
88
minimum_release_age_excludes = ["bun", "node", "npm:oxfmt", "npm:oxlint"]
99

1010
[tools]
11+
uv = "latest"
1112
bun = "latest"
1213
node = "latest"
1314
tombi = "latest"

pyproject.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[project]
2+
name = "skills"
3+
version = "0.1.0"
4+
description = "Add your description here"
5+
requires-python = ">=3.14"
6+
7+
[tool.pyrefly]
8+
search_path = [".", "skills/multilingual-caption-video/scripts"]
9+
ignore-missing-imports = ["faster_whisper"]
10+
11+
[tool.ruff]
12+
line-length = 80
13+
14+
[dependency-groups]
15+
dev = ["pyrefly>=1.1.1", "ruff>=0.15.22", "websockets>=16.1"]

skills/multilingual-caption-video/scripts/cleanup.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414

1515

1616
def create_workdir(parent: Path | None = None) -> Path:
17-
workdir = Path(tempfile.mkdtemp(prefix="caption-video.", dir=parent)).resolve()
17+
workdir = Path(
18+
tempfile.mkdtemp(prefix="caption-video.", dir=parent)
19+
).resolve()
1820
(workdir / MARKER).write_text(f"{workdir}\n", encoding="utf-8")
1921
return workdir
2022

@@ -87,7 +89,10 @@ def main() -> None:
8789
elif args.command == "schedule":
8890
print(
8991
json.dumps(
90-
{"pid": schedule_cleanup(args.path, args.delay), "delay": args.delay}
92+
{
93+
"pid": schedule_cleanup(args.path, args.delay),
94+
"delay": args.delay,
95+
}
9196
)
9297
)
9398
elif args.command == "keep":

skills/multilingual-caption-video/scripts/preferences.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88

99
def default_preferences_path() -> Path:
10-
config_home = Path(os.environ.get("XDG_CONFIG_HOME", Path.home() / ".config"))
10+
config_home = Path(
11+
os.environ.get("XDG_CONFIG_HOME", Path.home() / ".config")
12+
)
1113
return config_home / "multilingual-caption-video" / "preferences.json"
1214

1315

@@ -16,7 +18,10 @@ def validate_preferences(preferences: dict) -> dict:
1618
unknown = set(preferences) - allowed
1719
if unknown:
1820
raise ValueError(f"Unknown preferences: {', '.join(sorted(unknown))}")
19-
if "delivery" in preferences and preferences["delivery"] not in {"file", "url"}:
21+
if "delivery" in preferences and preferences["delivery"] not in {
22+
"file",
23+
"url",
24+
}:
2025
raise ValueError("delivery must be 'file' or 'url'")
2126
if "font_size" in preferences and (
2227
not isinstance(preferences["font_size"], int)
@@ -26,7 +31,8 @@ def validate_preferences(preferences: dict) -> dict:
2631
raise ValueError("font_size must be a positive integer")
2732
for key in ("font", "language"):
2833
if key in preferences and (
29-
not isinstance(preferences[key], str) or not preferences[key].strip()
34+
not isinstance(preferences[key], str)
35+
or not preferences[key].strip()
3036
):
3137
raise ValueError(f"{key} must be a non-empty string")
3238
return dict(sorted(preferences.items()))

skills/multilingual-caption-video/scripts/transcribe.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env -S uv run
2+
23
# /// script
34
# requires-python = ">=3.11"
45
# dependencies = ["faster-whisper==1.2.1"]
@@ -10,14 +11,18 @@
1011
from pathlib import Path
1112

1213

13-
def transcript_payload(segments, language: str, language_probability: float) -> dict:
14+
def transcript_payload(
15+
segments, language: str, language_probability: float
16+
) -> dict:
1417
cues = []
1518
for segment in segments:
1619
text = segment.text.strip()
1720
if not text:
1821
continue
1922
if (
20-
not all(math.isfinite(value) for value in (segment.start, segment.end))
23+
not all(
24+
math.isfinite(value) for value in (segment.start, segment.end)
25+
)
2126
or segment.end <= segment.start
2227
):
2328
raise ValueError(
@@ -44,7 +49,8 @@ def main() -> None:
4449
parser.add_argument("output", type=Path)
4550
parser.add_argument("--model", default="base")
4651
parser.add_argument(
47-
"--language", help="Optional ISO language code; omit to detect automatically"
52+
"--language",
53+
help="Optional ISO language code; omit to detect automatically",
4854
)
4955
args = parser.parse_args()
5056

@@ -62,7 +68,8 @@ def main() -> None:
6268
list(segments), info.language, info.language_probability
6369
)
6470
args.output.write_text(
65-
f"{json.dumps(payload, ensure_ascii=False, indent=2)}\n", encoding="utf-8"
71+
f"{json.dumps(payload, ensure_ascii=False, indent=2)}\n",
72+
encoding="utf-8",
6673
)
6774

6875

0 commit comments

Comments
 (0)