fix: declare click, typing-extensions, websocket-client as deps (#26)

Three first-party imports were relying on transitive dependencies that no longer resolve cleanly when installing from PyPI: - `click` (used by cli.py and commands/files.py) was being pulled in by older typer versions; typer 0.25.x dropped the explicit click dependency. With a clean `pip install google-colab-cli==0.5.4`, uv now resolves typer==0.25.1 which does NOT install click, and `colab version` fails immediately with ModuleNotFoundError: No module named 'click' - `typing_extensions` (used in commands/automation.py and others) was pulled in transitively by typer/pydantic; same fragility. - `websocket` (the websocket-client package; used by runtime.py via the kernel client) was pulled in by jupyter-kernel-client; not guaranteed. Verified by building a wheel and installing into a fresh venv: - Before: `colab version` -> ModuleNotFoundError: 'click' - After: `colab version` -> prints version string cleanly. All 198 tests still pass; ruff clean. Discovered while validating the live 0.5.4 install on PyPI ahead of the first OSS Exit Gate release.

Tyler committed May 27, 2026 at 09:27 UTC 2ea1eb27d7f9b22f407ea8e664e880a3c41f2c43
2 files changed +9
pyproject.toml
+3
@@ -5,6 +5,7 @@ description = "CLI for interacting with Colab."
5 readme = "README.md"
6 requires-python = ">=3.13"
7 dependencies = [
8 + "click>=8.0",
9 "google-auth>=2.49.1",
10 "google-auth-oauthlib>=1.3.0",
11 "jupyter-kernel-client",
@@ -19,6 +20,8 @@ dependencies = [
20 "requests>=2.32.5",
21 "rich>=14.3.3",
22 "typer>=0.24.1",
23 + "typing-extensions>=4.0",
24 + "websocket-client>=1.0",
25 ]
26
27 [project.scripts]
uv.lock
+6
@@ -306,6 +306,7 @@ wheels = [
306 name = "google-colab-cli"
307 source = { editable = "." }
308 dependencies = [
309 + { name = "click" },
310 { name = "google-auth" },
311 { name = "google-auth-oauthlib" },
312 { name = "jupyter-kernel-client" },
@@ -320,6 +321,8 @@ dependencies = [
321 { name = "requests" },
322 { name = "rich" },
323 { name = "typer" },
324 + { name = "typing-extensions" },
325 + { name = "websocket-client" },
326 ]
327
328 [package.dev-dependencies]
@@ -329,6 +332,7 @@ dev = [
332
333 [package.metadata]
334 requires-dist = [
335 + { name = "click", specifier = ">=8.0" },
336 { name = "google-auth", specifier = ">=2.49.1" },
337 { name = "google-auth-oauthlib", specifier = ">=1.3.0" },
338 { name = "jupyter-kernel-client", git = "https://github.com/googlecolab/jupyter-kernel-client.git" },
@@ -343,6 +347,8 @@ requires-dist = [
347 { name = "requests", specifier = ">=2.32.5" },
348 { name = "rich", specifier = ">=14.3.3" },
349 { name = "typer", specifier = ">=0.24.1" },
350 + { name = "typing-extensions", specifier = ">=4.0" },
351 + { name = "websocket-client", specifier = ">=1.0" },
352 ]
353
354 [package.metadata.requires-dev]