From 8af8bd7ffa634e137aecc65c7f7e1fda28dea65a Mon Sep 17 00:00:00 2001 From: badhope Date: Thu, 13 Aug 2026 02:49:50 +0800 Subject: [PATCH] build: make langgraph-cli[inmem] an optional dependency langgraph-cli[inmem] was declared as a hard runtime dependency, but nothing under src/skillspector/ imports it. Its only consumers are the `make langgraph-dev` target (which invokes the `langgraph` CLI) and developers who need the LangGraph Studio server. Move it to a new `langgraph-dev` optional dependency group and include it in the `dev` extra so the existing `make langgraph-dev` workflow continues to work unchanged. Runtime-only installs (`uv sync --locked --no-dev`) no longer pull in langgraph-cli or its transitive deps. The uv.lock is updated with a scoped metadata change (no package upgrades) so `uv lock --check` passes on the exact head. Signed-off-by: badhope --- pyproject.toml | 5 ++++- uv.lock | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6522d473..cd1e134d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,6 @@ dependencies = [ "pydantic>=2.12.0", "openai>=2.25.0", "langgraph>=1.0.10", - "langgraph-cli[inmem]>=0.4.14", "langchain-anthropic>=1.4.5", "langchain-aws>=0.2.0", "langchain-core>=1.2.17", @@ -53,8 +52,12 @@ dependencies = [ mcp = [ "mcp>=1.29.0,<2.0.0", ] +langgraph-dev = [ + "langgraph-cli[inmem]>=0.4.14", +] dev = [ "skillspector[mcp]", + "skillspector[langgraph-dev]", "pytest>=9.0.0", "pytest-asyncio>=1.3.0", "pytest-cov>=7.0.0", diff --git a/uv.lock b/uv.lock index c4f6b6a8..91d105d1 100644 --- a/uv.lock +++ b/uv.lock @@ -2685,7 +2685,6 @@ dependencies = [ { name = "langchain-core" }, { name = "langchain-openai" }, { name = "langgraph" }, - { name = "langgraph-cli", extra = ["inmem"] }, { name = "langsmith" }, { name = "openai" }, { name = "packaging" }, @@ -2712,6 +2711,9 @@ dev = [ mcp = [ { name = "mcp" }, ] +langgraph-dev = [ + { name = "langgraph-cli", extra = ["inmem"] }, +] [package.metadata] requires-dist = [ @@ -2724,7 +2726,7 @@ requires-dist = [ { name = "langchain-core", specifier = ">=1.2.17" }, { name = "langchain-openai", specifier = ">=1.1.10" }, { name = "langgraph", specifier = ">=1.0.10" }, - { name = "langgraph-cli", extras = ["inmem"], specifier = ">=0.4.14" }, + { name = "langgraph-cli", extras = ["inmem"], marker = "extra == 'langgraph-dev'", specifier = ">=0.4.14" }, { name = "langsmith", specifier = ">=0.7.30" }, { name = "mcp", marker = "extra == 'mcp'", specifier = ">=1.29.0,<2.0.0" }, { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.19.0" }, @@ -2738,12 +2740,13 @@ requires-dist = [ { name = "pyyaml", specifier = ">=6.0.1" }, { name = "rich", specifier = ">=14.3.0" }, { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.15.0" }, + { name = "skillspector", extras = ["langgraph-dev"], marker = "extra == 'dev'" }, { name = "skillspector", extras = ["mcp"], marker = "extra == 'dev'" }, { name = "twine", marker = "extra == 'dev'", specifier = ">=6.2.0" }, { name = "typer", specifier = ">=0.23.0,<0.24" }, { name = "yara-python", specifier = ">=4.5.0" }, ] -provides-extras = ["mcp", "dev"] +provides-extras = ["mcp", "langgraph-dev", "dev"] [[package]] name = "sniffio"