code-analysis-client 1.6.304__tar.gz → 1.6.305__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/PKG-INFO +8 -6
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/README.md +7 -5
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/client.py +3 -1
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/exceptions.py +5 -1
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/queue_wait.py +12 -5
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/server_api.py +4 -8
- code_analysis_client-1.6.305/code_analysis_client/version.txt +1 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client.egg-info/PKG-INFO +8 -6
- code_analysis_client-1.6.304/code_analysis_client/version.txt +0 -1
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/__init__.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/check_chain.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/commands_proxy.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/config.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/file_session.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/project.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/py.typed +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/responses.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/schema_disk_cache.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/server_schema.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/symbol_tree.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/universal_file.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/validation.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/vectorizer_state.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/worktree.py +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client.egg-info/SOURCES.txt +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client.egg-info/dependency_links.txt +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client.egg-info/requires.txt +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client.egg-info/top_level.txt +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/pyproject.toml +0 -0
- {code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-analysis-client
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.305
|
|
4
4
|
Summary: Async JSON-RPC client for the code-analysis MCP server (mcp-proxy-adapter JsonRpcClient)
|
|
5
5
|
Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -73,11 +73,13 @@ out = await client.call("some_long_running_command", {...})
|
|
|
73
73
|
Failures raise instead of returning an error envelope:
|
|
74
74
|
|
|
75
75
|
* `CommandFailedError` — the command ran but its inner result is
|
|
76
|
-
`{"success": false}
|
|
77
|
-
never returned as a dict). Carries
|
|
78
|
-
error object, e.g. `.error["code"]`)
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
`{"success": false}`, or a queued job ended `failed` (immediate and queued
|
|
77
|
+
commands alike; a failing result is never returned as a dict). Carries
|
|
78
|
+
`.command`, `.job_id`, `.error` (the server's error object, e.g. `.error["code"]`)
|
|
79
|
+
and `.result` (the inner envelope, when there is one).
|
|
80
|
+
* `JobFailedError` — the job was stopped or cancelled, or the queue reported a
|
|
81
|
+
queue-level error. Carries `.job_id`, `.status` and `.error` (always a
|
|
82
|
+
structured error dict).
|
|
81
83
|
* `JobTimeoutError` — only when a positive `timeout` elapses; the call detaches and
|
|
82
84
|
the job keeps running server-side (`websocket.on_timeout` is `detach`).
|
|
83
85
|
* `ClientValidationError` — the server refused the parameters (JSON-RPC `-32602`),
|
|
@@ -61,11 +61,13 @@ out = await client.call("some_long_running_command", {...})
|
|
|
61
61
|
Failures raise instead of returning an error envelope:
|
|
62
62
|
|
|
63
63
|
* `CommandFailedError` — the command ran but its inner result is
|
|
64
|
-
`{"success": false}
|
|
65
|
-
never returned as a dict). Carries
|
|
66
|
-
error object, e.g. `.error["code"]`)
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
`{"success": false}`, or a queued job ended `failed` (immediate and queued
|
|
65
|
+
commands alike; a failing result is never returned as a dict). Carries
|
|
66
|
+
`.command`, `.job_id`, `.error` (the server's error object, e.g. `.error["code"]`)
|
|
67
|
+
and `.result` (the inner envelope, when there is one).
|
|
68
|
+
* `JobFailedError` — the job was stopped or cancelled, or the queue reported a
|
|
69
|
+
queue-level error. Carries `.job_id`, `.status` and `.error` (always a
|
|
70
|
+
structured error dict).
|
|
69
71
|
* `JobTimeoutError` — only when a positive `timeout` elapses; the call detaches and
|
|
70
72
|
the job keeps running server-side (`websocket.on_timeout` is `detach`).
|
|
71
73
|
* `ClientValidationError` — the server refused the parameters (JSON-RPC `-32602`),
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/client.py
RENAMED
|
@@ -305,7 +305,9 @@ class CodeAnalysisAsyncClient:
|
|
|
305
305
|
|
|
306
306
|
An inner ``success=false`` raises
|
|
307
307
|
:class:`~code_analysis_client.exceptions.CommandFailedError` (never returned as a dict);
|
|
308
|
-
a job that ended failed
|
|
308
|
+
a queued job that ended failed raises
|
|
309
|
+
:class:`~code_analysis_client.exceptions.CommandFailedError` with the server error code,
|
|
310
|
+
message and data (same as an immediate error); a job that was stopped or cancelled raises
|
|
309
311
|
:class:`~code_analysis_client.exceptions.JobFailedError`; a server -32602 refusal raises
|
|
310
312
|
:class:`~code_analysis_client.exceptions.ClientValidationError`. A negative ``timeout`` or
|
|
311
313
|
a non-positive ``poll_interval`` raises ``ValueError`` before anything is sent.
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/exceptions.py
RENAMED
|
@@ -63,7 +63,11 @@ class QueueJobError(RuntimeError):
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
class JobFailedError(QueueJobError):
|
|
66
|
-
"""A queued job
|
|
66
|
+
"""A queued job was stopped or cancelled, or reported a queue-level error status.
|
|
67
|
+
|
|
68
|
+
A queued job that ended ``failed`` with the command's own error raises
|
|
69
|
+
:class:`CommandFailedError` instead (owner decision 2026-11-07, bug e58c5982).
|
|
70
|
+
"""
|
|
67
71
|
|
|
68
72
|
def __init__(
|
|
69
73
|
self,
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/queue_wait.py
RENAMED
|
@@ -7,7 +7,8 @@ for an existing job id). This module only turns what the adapter returns or rais
|
|
|
7
7
|
client's public result/exception contract:
|
|
8
8
|
|
|
9
9
|
* inner ``success=false`` -> :class:`~code_analysis_client.exceptions.CommandFailedError`
|
|
10
|
-
* job failed
|
|
10
|
+
* job failed (the command's own error) -> :class:`~code_analysis_client.exceptions.CommandFailedError`
|
|
11
|
+
* job stopped / cancelled -> :class:`~code_analysis_client.exceptions.JobFailedError`
|
|
11
12
|
* caller wait timeout (job keeps running) -> :class:`~code_analysis_client.exceptions.JobTimeoutError`
|
|
12
13
|
* server JSON-RPC refusal -> :class:`~code_analysis_client.exceptions.ClientValidationError`
|
|
13
14
|
(mapped in ``client.py`` next to the transport call)
|
|
@@ -138,12 +139,15 @@ def job_failure(
|
|
|
138
139
|
terminal_event: Optional[Dict[str, Any]] = None,
|
|
139
140
|
*,
|
|
140
141
|
command: Optional[str] = None,
|
|
141
|
-
) -> Union[JobFailedError, ClientValidationError]:
|
|
142
|
+
) -> Union[CommandFailedError, JobFailedError, ClientValidationError]:
|
|
142
143
|
"""Build the error for a job that ended failed / stopped / cancelled.
|
|
143
144
|
|
|
144
145
|
A job whose structured error carries JSON-RPC ``-32602`` (the server validates after
|
|
145
|
-
enqueueing) yields :class:`ClientValidationError` exactly like a top-level refusal
|
|
146
|
-
|
|
146
|
+
enqueueing) yields :class:`ClientValidationError` exactly like a top-level refusal. A job that
|
|
147
|
+
ended ``failed`` (its command returned an error, or the job itself failed) yields
|
|
148
|
+
:class:`CommandFailedError` carrying the structured error, the same as an immediate command
|
|
149
|
+
that returns an error envelope (owner decision 2026-11-07, bug e58c5982, contract RC7). Only a
|
|
150
|
+
``stopped`` / ``cancelled`` job yields :class:`JobFailedError`.
|
|
147
151
|
|
|
148
152
|
``error`` is always the structured error object: the failed command's own error when the
|
|
149
153
|
status payload carries one, else the queue-level error (a bare string is wrapped as
|
|
@@ -167,6 +171,8 @@ def job_failure(
|
|
|
167
171
|
error.get("data"),
|
|
168
172
|
code=validation_error_code_for_command(command),
|
|
169
173
|
)
|
|
174
|
+
if status == "failed":
|
|
175
|
+
return CommandFailedError(command, job_id, error)
|
|
170
176
|
return JobFailedError(job_id, error, status=status)
|
|
171
177
|
|
|
172
178
|
|
|
@@ -212,7 +218,8 @@ def map_adapter_error(
|
|
|
212
218
|
|
|
213
219
|
* ``CommandSessionTimeoutError`` / ``asyncio.TimeoutError`` -> ``JobTimeoutError`` (the job keeps running)
|
|
214
220
|
* ``CommandInnerFailureError`` -> ``CommandFailedError``
|
|
215
|
-
* ``CommandSessionFailedError`` with a terminal event -> ``
|
|
221
|
+
* ``CommandSessionFailedError`` with a terminal event -> ``CommandFailedError`` when the job
|
|
222
|
+
``failed``, ``JobFailedError`` when it was stopped / cancelled (structured error)
|
|
216
223
|
* ``CommandSessionFailedError`` for a refused open (numeric ``code``) -> ``ClientRemoteResponseError``
|
|
217
224
|
so the caller's JSON-RPC handling (-32602, -32601) is the same as on the HTTP path
|
|
218
225
|
* ``CommandSessionFailedError`` for a refused open carrying the server's own string error
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/server_api.py
RENAMED
|
@@ -87,15 +87,11 @@ EDITING_REMOVED_COMMANDS: FrozenSet[str] = frozenset(
|
|
|
87
87
|
"session_undo",
|
|
88
88
|
"session_redo",
|
|
89
89
|
"session_write",
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"cleanup_deleted_files",
|
|
90
|
+
# Bug 9ba69ede-a5fc-416a-a4db-f91fffad5aa2 (K6, commit 958c266c) re-registered delete_file, unmark_deleted_file,
|
|
91
|
+
# delete_files_by_mask, restore_deleted_files and cleanup_deleted_files; restore_backup_file, delete_backup and
|
|
92
|
+
# clear_all_backups are registered in hooks_register_part2 (F5 backup contract). They are served commands, so
|
|
93
|
+
# they are no longer listed here (live-deployed-server reported them as DISCREPANCY: listed removed but live-present).
|
|
95
94
|
"collapse_versions",
|
|
96
|
-
"restore_backup_file",
|
|
97
|
-
"delete_backup",
|
|
98
|
-
"clear_all_backups",
|
|
99
95
|
"format_code",
|
|
100
96
|
}
|
|
101
97
|
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.6.305
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-analysis-client
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.305
|
|
4
4
|
Summary: Async JSON-RPC client for the code-analysis MCP server (mcp-proxy-adapter JsonRpcClient)
|
|
5
5
|
Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -73,11 +73,13 @@ out = await client.call("some_long_running_command", {...})
|
|
|
73
73
|
Failures raise instead of returning an error envelope:
|
|
74
74
|
|
|
75
75
|
* `CommandFailedError` — the command ran but its inner result is
|
|
76
|
-
`{"success": false}
|
|
77
|
-
never returned as a dict). Carries
|
|
78
|
-
error object, e.g. `.error["code"]`)
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
`{"success": false}`, or a queued job ended `failed` (immediate and queued
|
|
77
|
+
commands alike; a failing result is never returned as a dict). Carries
|
|
78
|
+
`.command`, `.job_id`, `.error` (the server's error object, e.g. `.error["code"]`)
|
|
79
|
+
and `.result` (the inner envelope, when there is one).
|
|
80
|
+
* `JobFailedError` — the job was stopped or cancelled, or the queue reported a
|
|
81
|
+
queue-level error. Carries `.job_id`, `.status` and `.error` (always a
|
|
82
|
+
structured error dict).
|
|
81
83
|
* `JobTimeoutError` — only when a positive `timeout` elapses; the call detaches and
|
|
82
84
|
the job keeps running server-side (`websocket.on_timeout` is `detach`).
|
|
83
85
|
* `ClientValidationError` — the server refused the parameters (JSON-RPC `-32602`),
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.6.304
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/__init__.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/check_chain.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/commands_proxy.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/config.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/file_session.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/project.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/responses.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/server_schema.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/symbol_tree.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/universal_file.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.304 → code_analysis_client-1.6.305}/code_analysis_client/worktree.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|