From d4875d1e5a89bb30e1bceba287debc2bde42a702 Mon Sep 17 00:00:00 2001 From: Rahul Johny Date: Tue, 27 Oct 2026 12:09:44 +0530 Subject: [PATCH] chore: sync to llmwhisperer-client 2.10.0 Move the exact pin, the vendored spec and its provenance together, as a client bump has to: the CLI derives its flags from the spec and can only offer what the pinned client accepts. The spec is copied byte-for-byte from `specs/llmwhisperer.json` at the client's v2.10.0 tag, which its `tools/gen_sdk.sh` records as upstream `Zipstack/unstract-llm-whisperer` 9fe7085b44da6ca37e635fba3ab082c725ef8aef. The one parameter 2.10.0 adds, `include_cell_borders`, derives into `whisper extract` as a paired `--include-cell-borders/--no-include-cell-borders` flag, so `derived_flags.json` gains that entry and nothing else -- no flag lost, no choice or type narrowed. Its help comes from the client's own docstring, which states that the parameter keys off the uploaded file type rather than the mode. Like the existing `--allow-rotated-text`, the spec defaults it to true while the client defaults it to None, so omitting the flag sends nothing and the server's default applies. Co-Authored-By: Claude Opus 5 --- pyproject.toml | 2 +- src/unstract_cli/specs/llmwhisperer.json | 9 +++++++++ src/unstract_cli/specs/provenance.json | 6 +++--- tests/derived_flags.json | 11 +++++++++++ uv.lock | 8 ++++---- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index daa96f2..10f0640 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ # clients, so one that moves changes the CLI's surface. Each release re-pins # deliberately, against the specs vendored in `src/unstract_cli/specs`. "unstract-client==1.7.1", - "llmwhisperer-client==2.9.1", + "llmwhisperer-client==2.10.0", # Both clients pull this in, but the CLI imports its exception classes # directly to classify a failure, so it names the dependency itself. "requests>=2.32.3", diff --git a/src/unstract_cli/specs/llmwhisperer.json b/src/unstract_cli/specs/llmwhisperer.json index 1cd64d2..1664cd9 100644 --- a/src/unstract_cli/specs/llmwhisperer.json +++ b/src/unstract_cli/specs/llmwhisperer.json @@ -1589,6 +1589,15 @@ }, "x-internal": true }, + { + "in": "query", + "name": "include_cell_borders", + "required": false, + "schema": { + "default": true, + "type": "boolean" + } + }, { "in": "query", "name": "include_line_confidence", diff --git a/src/unstract_cli/specs/provenance.json b/src/unstract_cli/specs/provenance.json index 7304379..761c8a4 100644 --- a/src/unstract_cli/specs/provenance.json +++ b/src/unstract_cli/specs/provenance.json @@ -7,10 +7,10 @@ "sha256": "c0de3a14254600f436483561ebb737feac4023fdef2fd46d6abf15dcd2182ad9" }, "llmwhisperer.json": { - "client": "llmwhisperer-client==2.9.1", + "client": "llmwhisperer-client==2.10.0", "repo": "https://github.com/Zipstack/unstract-llm-whisperer", - "commit": "fa6cf651a594227f2249dfe0990f80f1ff780398", + "commit": "9fe7085b44da6ca37e635fba3ab082c725ef8aef", "path": "specs/llmwhisperer.json", - "sha256": "c015d035b9e06f58e80aabdb5190fbb582dc1b4b8ee48c3a6924fe4392edc650" + "sha256": "4d758a3e3a8dbe972c7031bf5db813450c8855ca112fbc5bc1d42ac296a44d34" } } diff --git a/tests/derived_flags.json b/tests/derived_flags.json index 0ce4b59..ce2456f 100644 --- a/tests/derived_flags.json +++ b/tests/derived_flags.json @@ -66,6 +66,17 @@ "choices": [], "short": null }, + "--include-cell-borders": { + "name": "include_cell_borders", + "type": "boolean", + "default": null, + "description": "Whether an Excel workbook's own cell borders are drawn into the extracted text as box-drawing characters. Turning it off drops every border, leaving columns aligned and no cell value lost, which costs fewer tokens downstream. This keys off the uploaded file type, not the mode: it applies to any XLS or XLSX upload whatever mode was requested, the default \"form\" mode included, and is ignored for every other kind of document.", + "array": false, + "nullable": false, + "required": false, + "choices": [], + "short": null + }, "--include-line-confidence": { "name": "include_line_confidence", "type": "boolean", diff --git a/uv.lock b/uv.lock index 0057c00..410dd7a 100644 --- a/uv.lock +++ b/uv.lock @@ -172,7 +172,7 @@ wheels = [ [[package]] name = "llmwhisperer-client" -version = "2.9.1" +version = "2.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -180,9 +180,9 @@ dependencies = [ { name = "requests" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/8e/87d568d5ddf2c6494c11bedc7844e9ed150e90afe228f77867705bfd3d38/llmwhisperer_client-2.9.1.tar.gz", hash = "sha256:74dbced5a1a481ca5192c3d817a9f9e12bad4d9c3aaac64751ffb0e9b6182f35", size = 3319616, upload-time = "2026-09-18T10:56:06.901Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/60/b4ba32f16363b3dfa6e37716db0d0e52efac41bebce1043a0ff690c65e0c/llmwhisperer_client-2.10.0.tar.gz", hash = "sha256:7b4f7921dcba8a51cd4315cfae425aeb14bd24a1935df5f27a406a86be3d4765", size = 3320161, upload-time = "2026-10-27T06:15:26.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/41/2f221e4ac210dd8a9307849cf0ac35ff87cdd8b344594524d15a52c8f115/llmwhisperer_client-2.9.1-py3-none-any.whl", hash = "sha256:9e9ad402f16562da4dad9d406e06e6c42c077bf8846670040f40e8605c5c82e4", size = 69186, upload-time = "2026-09-18T10:56:05.114Z" }, + { url = "https://files.pythonhosted.org/packages/61/3d/cbb4cff42412117393c2b49c06f4bd4857322ac3310fe7d7ebf4893b54f2/llmwhisperer_client-2.10.0-py3-none-any.whl", hash = "sha256:e60e4877f021197dbb1b87624876cc607e99eedc8239c9ec563fafc645b66407", size = 69471, upload-time = "2026-10-27T06:15:25.636Z" }, ] [[package]] @@ -396,7 +396,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "click", specifier = ">=8.1,<9" }, - { name = "llmwhisperer-client", specifier = "==2.9.1" }, + { name = "llmwhisperer-client", specifier = "==2.10.0" }, { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0" }, { name = "pyyaml", marker = "extra == 'dev'", specifier = ">=6.0" }, { name = "requests", specifier = ">=2.32.3" },