From c95c077b9b65c44e71982f744d816ad5453a6b0d Mon Sep 17 00:00:00 2001 From: Dickson Tsai Date: Sat, 19 Jul 2025 15:21:02 -0700 Subject: [PATCH] Ruff --- src/claude_code_sdk/__init__.py | 1 - src/claude_code_sdk/_internal/client.py | 4 +--- .../_internal/transport/subprocess_cli.py | 13 +++++++++---- tests/test_streaming_client.py | 12 ++++++++---- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/claude_code_sdk/__init__.py b/src/claude_code_sdk/__init__.py index dc84df1..1439937 100644 --- a/src/claude_code_sdk/__init__.py +++ b/src/claude_code_sdk/__init__.py @@ -1,6 +1,5 @@ """Claude SDK for Python.""" - from ._errors import ( ClaudeSDKError, CLIConnectionError, diff --git a/src/claude_code_sdk/_internal/client.py b/src/claude_code_sdk/_internal/client.py index d40540f..c1afa9e 100644 --- a/src/claude_code_sdk/_internal/client.py +++ b/src/claude_code_sdk/_internal/client.py @@ -20,9 +20,7 @@ class InternalClient: """Process a query through transport.""" transport = SubprocessCLITransport( - prompt=prompt, - options=options, - close_stdin_after_prompt=True + prompt=prompt, options=options, close_stdin_after_prompt=True ) try: diff --git a/src/claude_code_sdk/_internal/transport/subprocess_cli.py b/src/claude_code_sdk/_internal/transport/subprocess_cli.py index 701b686..92b0743 100644 --- a/src/claude_code_sdk/_internal/transport/subprocess_cli.py +++ b/src/claude_code_sdk/_internal/transport/subprocess_cli.py @@ -161,6 +161,7 @@ class SubprocessCLITransport(Transport): self._stdin_stream = TextSendStream(self._process.stdin) # Start streaming messages to stdin in background import asyncio + asyncio.create_task(self._stream_to_stdin()) else: # String mode: close stdin immediately (backward compatible) @@ -214,7 +215,7 @@ class SubprocessCLITransport(Transport): "type": "user", "message": {"role": "user", "content": str(message)}, "parent_tool_use_id": None, - "session_id": options.get("session_id", "default") + "session_id": options.get("session_id", "default"), } await self._stdin_stream.send(json.dumps(message) + "\n") @@ -362,7 +363,9 @@ class SubprocessCLITransport(Transport): async def interrupt(self) -> None: """Send interrupt control request (only works in streaming mode).""" if not self._is_streaming: - raise CLIConnectionError("Interrupt requires streaming mode (AsyncIterable prompt)") + raise CLIConnectionError( + "Interrupt requires streaming mode (AsyncIterable prompt)" + ) if not self._stdin_stream: raise CLIConnectionError("Not connected or stdin not available") @@ -382,7 +385,7 @@ class SubprocessCLITransport(Transport): control_request = { "type": "control_request", "request_id": request_id, - "request": request + "request": request, } # Send request @@ -397,7 +400,9 @@ class SubprocessCLITransport(Transport): response = self._pending_control_responses.pop(request_id) if response.get("subtype") == "error": - raise CLIConnectionError(f"Control request failed: {response.get('error')}") + raise CLIConnectionError( + f"Control request failed: {response.get('error')}" + ) return response except TimeoutError: diff --git a/tests/test_streaming_client.py b/tests/test_streaming_client.py index 9dc131d..cf1c6a5 100644 --- a/tests/test_streaming_client.py +++ b/tests/test_streaming_client.py @@ -389,7 +389,8 @@ class TestQueryWithAsyncIterable: if response is None: response = '{"type": "result", "subtype": "success", "duration_ms": 100, "duration_api_ms": 50, "is_error": false, "num_turns": 1, "session_id": "test", "total_cost_usd": 0.001}' - script_content = textwrap.dedent(""" + script_content = textwrap.dedent( + """ #!/usr/bin/env python3 import sys import json @@ -416,7 +417,8 @@ class TestQueryWithAsyncIterable: ) if expected_messages is not None: - script_content += textwrap.dedent(f""" + script_content += textwrap.dedent( + f""" # Verify we got the expected messages assert len(stdin_messages) == {len(expected_messages)} """, @@ -425,12 +427,14 @@ class TestQueryWithAsyncIterable: script_content += f'''assert '"{msg}"' in stdin_messages[{i}]\n''' if should_error: - script_content += textwrap.dedent(""" + script_content += textwrap.dedent( + """ sys.exit(1) """, ) else: - script_content += textwrap.dedent(f""" + script_content += textwrap.dedent( + f""" # Output response print('{response}') """,