code-analysis-client 1.6.201__tar.gz → 1.6.203__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.201 → code_analysis_client-1.6.203}/PKG-INFO +1 -1
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/check_chain.py +1 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/exceptions.py +10 -2
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/file_session.py +31 -1
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/responses.py +12 -3
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/server_api.py +2 -0
- code_analysis_client-1.6.203/code_analysis_client/version.txt +1 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client.egg-info/PKG-INFO +1 -1
- code_analysis_client-1.6.201/code_analysis_client/version.txt +0 -1
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/README.md +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/__init__.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/client.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/commands_proxy.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/config.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/py.typed +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/queue_wait.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/schema_disk_cache.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/server_schema.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/universal_file.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/validation.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/vectorizer_state.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/worktree.py +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client.egg-info/SOURCES.txt +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client.egg-info/dependency_links.txt +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client.egg-info/requires.txt +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client.egg-info/top_level.txt +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/pyproject.toml +0 -0
- {code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/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.203
|
|
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
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/exceptions.py
RENAMED
|
@@ -13,7 +13,12 @@ from typing import Any, Dict, Optional
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ClientValidationError(ValueError):
|
|
16
|
-
"""Parameters do not match the command JSON schema
|
|
16
|
+
"""Parameters do not match the command JSON schema, or the server refused a command.
|
|
17
|
+
|
|
18
|
+
``code`` is ``VALIDATION_ERROR`` for a client-side parameter failure; when the server
|
|
19
|
+
answered with a refusal, ``code`` is the exact server error code (for example
|
|
20
|
+
``SESSION_OPEN_IN_EDITOR``) and ``details`` is the server's error details object.
|
|
21
|
+
"""
|
|
17
22
|
|
|
18
23
|
code = "VALIDATION_ERROR"
|
|
19
24
|
|
|
@@ -23,11 +28,14 @@ class ClientValidationError(ValueError):
|
|
|
23
28
|
*,
|
|
24
29
|
field: Optional[str] = None,
|
|
25
30
|
details: Optional[Dict[str, Any]] = None,
|
|
31
|
+
code: Optional[str] = None,
|
|
26
32
|
) -> None:
|
|
27
|
-
"""Initialize
|
|
33
|
+
"""Initialize with optional field, details payload and the server error code."""
|
|
28
34
|
super().__init__(message)
|
|
29
35
|
self.field = field
|
|
30
36
|
self.details = details or {}
|
|
37
|
+
if code:
|
|
38
|
+
self.code = code
|
|
31
39
|
|
|
32
40
|
|
|
33
41
|
class QueueJobError(RuntimeError):
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/file_session.py
RENAMED
|
@@ -171,7 +171,11 @@ class FileSessionClient:
|
|
|
171
171
|
deleted.
|
|
172
172
|
|
|
173
173
|
Returns ``session_id``, ``deleted``, ``released_lock_count``,
|
|
174
|
-
``released_subordinate_count``,
|
|
174
|
+
``released_subordinate_count``, ``released_advisory_lease_count``,
|
|
175
|
+
``worktrees_removed``, ``checks_stopped`` and ``branches_deleted``. The session's checks
|
|
176
|
+
are stopped and every owned worktree and ``cas-worktree/*`` branch is removed whatever
|
|
177
|
+
``force`` is. Every server refusal RAISES :class:`ClientValidationError` with ``code``
|
|
178
|
+
equal to the server error code and ``details`` the server details.
|
|
175
179
|
"""
|
|
176
180
|
params: Dict[str, Any] = {"session_id": session_id}
|
|
177
181
|
if force:
|
|
@@ -183,6 +187,32 @@ class FileSessionClient:
|
|
|
183
187
|
)
|
|
184
188
|
)
|
|
185
189
|
|
|
190
|
+
async def session_worktrees_delete(
|
|
191
|
+
self, project_id: str, session_id: str
|
|
192
|
+
) -> Dict[str, Any]:
|
|
193
|
+
"""Delete every check worktree and branch of a session in one project.
|
|
194
|
+
|
|
195
|
+
Calls ``session_worktrees_delete`` (the editor's cleanup after it closed its last file;
|
|
196
|
+
the session itself stays valid). Returns ``project_id``, ``session_id``,
|
|
197
|
+
``session_valid``, ``checks_stopped``, ``worktrees_removed``, ``directory_removed``,
|
|
198
|
+
``branches_deleted`` and ``already_clean``.
|
|
199
|
+
|
|
200
|
+
Every server refusal RAISES :class:`ClientValidationError` whose ``code`` is the server
|
|
201
|
+
error code (``SESSION_OPEN_IN_EDITOR`` with ``details['files']``,
|
|
202
|
+
``SESSION_EDITOR_UNREACHABLE``, ``SESSION_CHECKS_STILL_RUNNING``,
|
|
203
|
+
``WORKTREE_REMOVE_FAILED``, ``PROJECT_NOT_FOUND``, ``SESSION_NOT_FOUND``, ...) and whose
|
|
204
|
+
``details`` is the server details object.
|
|
205
|
+
"""
|
|
206
|
+
return _unwrap(
|
|
207
|
+
await self._client.call_validated(
|
|
208
|
+
"session_worktrees_delete",
|
|
209
|
+
{
|
|
210
|
+
"project_id": _require_non_empty(project_id, field="project_id"),
|
|
211
|
+
"session_id": _require_non_empty(session_id, field="session_id"),
|
|
212
|
+
},
|
|
213
|
+
)
|
|
214
|
+
)
|
|
215
|
+
|
|
186
216
|
async def delete_foreign_session(
|
|
187
217
|
self, session_id: str, *, force: bool = False
|
|
188
218
|
) -> Dict[str, Any]:
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/responses.py
RENAMED
|
@@ -46,7 +46,11 @@ def unwrap_command_result(
|
|
|
46
46
|
*,
|
|
47
47
|
session_not_found_type: type[ClientValidationError] | None = None,
|
|
48
48
|
) -> Dict[str, Any]:
|
|
49
|
-
"""Return success ``data`` dict or raise :class:`ClientValidationError`.
|
|
49
|
+
"""Return success ``data`` dict or raise :class:`ClientValidationError`.
|
|
50
|
+
|
|
51
|
+
A refusal raises with ``.code`` equal to the server error code and ``.details`` equal to the
|
|
52
|
+
server's error details object (``{}`` when it carries none).
|
|
53
|
+
"""
|
|
50
54
|
if data.get("success"):
|
|
51
55
|
inner = data.get("data")
|
|
52
56
|
return inner if isinstance(inner, dict) else data
|
|
@@ -57,8 +61,11 @@ def unwrap_command_result(
|
|
|
57
61
|
message = err.get("message")
|
|
58
62
|
if message is None:
|
|
59
63
|
message = str(data)
|
|
64
|
+
server_details = vectorizer_error_details(data)
|
|
60
65
|
if code == "SESSION_NOT_FOUND" and session_not_found_type is not None:
|
|
61
|
-
raise session_not_found_type(
|
|
66
|
+
raise session_not_found_type(
|
|
67
|
+
message, field="session_id", details=server_details, code=code
|
|
68
|
+
)
|
|
62
69
|
if code == "VECTORIZER_UNAVAILABLE":
|
|
63
70
|
details = vectorizer_error_details(data)
|
|
64
71
|
raise VectorizerUnavailableError(
|
|
@@ -71,4 +78,6 @@ def unwrap_command_result(
|
|
|
71
78
|
retry_after_seconds=details.get("retry_after_seconds"),
|
|
72
79
|
details=details,
|
|
73
80
|
)
|
|
74
|
-
raise ClientValidationError(
|
|
81
|
+
raise ClientValidationError(
|
|
82
|
+
message, field="command", details=server_details, code=code or None
|
|
83
|
+
)
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/server_api.py
RENAMED
|
@@ -133,6 +133,7 @@ FILE_SESSION_COMMANDS: FrozenSet[str] = frozenset(
|
|
|
133
133
|
"session_create",
|
|
134
134
|
"session_validate",
|
|
135
135
|
"session_delete",
|
|
136
|
+
"session_worktrees_delete",
|
|
136
137
|
"session_list",
|
|
137
138
|
"session_view",
|
|
138
139
|
"session_open_file",
|
|
@@ -170,6 +171,7 @@ FILE_SESSION_FACADE_METHODS: Dict[str, str] = {
|
|
|
170
171
|
"session_create": "create_session",
|
|
171
172
|
"session_validate": "validate_session",
|
|
172
173
|
"session_delete": "delete_session",
|
|
174
|
+
"session_worktrees_delete": "session_worktrees_delete",
|
|
173
175
|
"session_list": "list_sessions",
|
|
174
176
|
"session_view": "view_session",
|
|
175
177
|
"session_open_file": "lock_file",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.6.203
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/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.203
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.6.201
|
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/__init__.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/client.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/commands_proxy.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/queue_wait.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/server_schema.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/universal_file.py
RENAMED
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/code_analysis_client/validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_analysis_client-1.6.201 → code_analysis_client-1.6.203}/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
|