From 8e652d7d87009bb6a7824595d3af55a3bf0d231b Mon Sep 17 00:00:00 2001 From: Dickson Tsai Date: Sat, 19 Jul 2025 20:04:58 -0700 Subject: [PATCH] Fix lint and test --- CLAUDE.md | 4 ++-- .../_internal/transport/subprocess_cli.py | 9 +++------ src/claude_code_sdk/client.py | 8 ++++++-- src/claude_code_sdk/query.py | 4 +++- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 69f23fb..fb9ed47 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -3,8 +3,8 @@ ```bash # Lint and style # Check for issues and fix automatically -python -m ruff check src/ test/ --fix -python -m ruff format src/ test/ +python -m ruff check src/ tests/ --fix +python -m ruff format src/ tests/ # Typecheck (only done for src/) python -m mypy src/ diff --git a/src/claude_code_sdk/_internal/transport/subprocess_cli.py b/src/claude_code_sdk/_internal/transport/subprocess_cli.py index 6a22eec..94c42fa 100644 --- a/src/claude_code_sdk/_internal/transport/subprocess_cli.py +++ b/src/claude_code_sdk/_internal/transport/subprocess_cli.py @@ -296,12 +296,9 @@ class SubprocessCLITransport(Transport): yield data except GeneratorExit: return - except json.JSONDecodeError as e: - logger.warning( - f"Failed to parse JSON from CLI output: {e}. Buffer content: {json_buffer[:200]}..." - ) - # Clear buffer to avoid repeated parse attempts on malformed data - json_buffer = "" + except json.JSONDecodeError: + # Don't clear buffer - we might be in the middle of a split JSON message + # The buffer will be cleared when we successfully parse or hit size limit continue except anyio.ClosedResourceError: diff --git a/src/claude_code_sdk/client.py b/src/claude_code_sdk/client.py index 3c24cb1..a4c81ed 100644 --- a/src/claude_code_sdk/client.py +++ b/src/claude_code_sdk/client.py @@ -98,7 +98,9 @@ class ClaudeSDKClient: self._transport: Any | None = None os.environ["CLAUDE_CODE_ENTRYPOINT"] = "sdk-py-client" - async def connect(self, prompt: str | AsyncIterable[dict[str, Any]] | None = None) -> None: + async def connect( + self, prompt: str | AsyncIterable[dict[str, Any]] | None = None + ) -> None: """Connect to Claude with a prompt or message stream.""" from ._internal.transport.subprocess_cli import SubprocessCLITransport @@ -128,7 +130,9 @@ class ClaudeSDKClient: if message: yield message - async def query(self, prompt: str | AsyncIterable[dict[str, Any]], session_id: str = "default") -> None: + async def query( + self, prompt: str | AsyncIterable[dict[str, Any]], session_id: str = "default" + ) -> None: """ Send a new request in streaming mode. diff --git a/src/claude_code_sdk/query.py b/src/claude_code_sdk/query.py index 3732762..ad77a1b 100644 --- a/src/claude_code_sdk/query.py +++ b/src/claude_code_sdk/query.py @@ -9,7 +9,9 @@ from .types import ClaudeCodeOptions, Message async def query( - *, prompt: str | AsyncIterable[dict[str, Any]], options: ClaudeCodeOptions | None = None + *, + prompt: str | AsyncIterable[dict[str, Any]], + options: ClaudeCodeOptions | None = None, ) -> AsyncIterator[Message]: """ Query Claude Code for one-shot or unidirectional streaming interactions.