mirror of
https://github.com/anthropics/claude-agent-sdk-python.git
synced 2025-10-06 01:00:03 +03:00
Rename claude_code to claude_agent (#188)
This commit is contained in:
4
.github/workflows/create-release-tag.yml
vendored
4
.github/workflows/create-release-tag.yml
vendored
@@ -51,9 +51,9 @@ jobs:
|
||||
--title "Release v${{ steps.extract_version.outputs.version }}" \
|
||||
--generate-notes \
|
||||
--notes-start-tag "${{ steps.previous_tag.outputs.previous_tag }}" \
|
||||
--notes "Published to PyPI: https://pypi.org/project/claude-code-sdk/${{ steps.extract_version.outputs.version }}/
|
||||
--notes "Published to PyPI: https://pypi.org/project/claude-agent-sdk/${{ steps.extract_version.outputs.version }}/
|
||||
|
||||
### Installation
|
||||
\`\`\`bash
|
||||
pip install claude-code-sdk==${{ steps.extract_version.outputs.version }}
|
||||
pip install claude-agent-sdk==${{ steps.extract_version.outputs.version }}
|
||||
\`\`\`"
|
||||
|
||||
14
.github/workflows/publish.yml
vendored
14
.github/workflows/publish.yml
vendored
@@ -102,7 +102,7 @@ jobs:
|
||||
run: |
|
||||
twine upload dist/*
|
||||
echo "Package published to PyPI"
|
||||
echo "Install with: pip install claude-code-sdk==${{ env.VERSION }}"
|
||||
echo "Install with: pip install claude-agent-sdk==${{ env.VERSION }}"
|
||||
|
||||
- name: Create version update PR
|
||||
env:
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
echo "Getting SHA for pyproject.toml"
|
||||
PYPROJECT_SHA=$(gh api /repos/$GITHUB_REPOSITORY/contents/pyproject.toml --jq '.sha')
|
||||
echo "Getting SHA for _version.py"
|
||||
VERSION_SHA=$(gh api /repos/$GITHUB_REPOSITORY/contents/src/claude_code_sdk/_version.py --jq '.sha')
|
||||
VERSION_SHA=$(gh api /repos/$GITHUB_REPOSITORY/contents/src/claude_agent_sdk/_version.py --jq '.sha')
|
||||
|
||||
# Commit pyproject.toml via GitHub API (this creates signed commits)
|
||||
message="chore: bump version to ${{ env.VERSION }}"
|
||||
@@ -138,10 +138,10 @@ jobs:
|
||||
-f branch="$BRANCH_NAME"
|
||||
|
||||
# Commit _version.py via GitHub API
|
||||
base64 -i src/claude_code_sdk/_version.py > version.py.b64
|
||||
base64 -i src/claude_agent_sdk/_version.py > version.py.b64
|
||||
gh api \
|
||||
--method PUT \
|
||||
/repos/$GITHUB_REPOSITORY/contents/src/claude_code_sdk/_version.py \
|
||||
/repos/$GITHUB_REPOSITORY/contents/src/claude_agent_sdk/_version.py \
|
||||
-f message="$message" \
|
||||
-F content=@version.py.b64 \
|
||||
-f sha="$VERSION_SHA" \
|
||||
@@ -152,11 +152,11 @@ jobs:
|
||||
|
||||
## Changes
|
||||
- Updated version in \`pyproject.toml\`
|
||||
- Updated version in \`src/claude_code_sdk/_version.py\`
|
||||
- Updated version in \`src/claude_agent_sdk/_version.py\`
|
||||
|
||||
## Release Information
|
||||
- Published to PyPI: https://pypi.org/project/claude-code-sdk/${{ env.VERSION }}/
|
||||
- Install with: \`pip install claude-code-sdk==${{ env.VERSION }}\`
|
||||
- Published to PyPI: https://pypi.org/project/claude-agent-sdk/${{ env.VERSION }}/
|
||||
- Install with: \`pip install claude-agent-sdk==${{ env.VERSION }}\`
|
||||
|
||||
🤖 Generated by GitHub Actions"
|
||||
|
||||
|
||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
python -m pytest tests/ -v --cov=claude_code_sdk --cov-report=xml
|
||||
python -m pytest tests/ -v --cov=claude_agent_sdk --cov-report=xml
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
|
||||
@@ -18,7 +18,7 @@ python -m pytest tests/test_client.py
|
||||
|
||||
# Codebase Structure
|
||||
|
||||
- `src/claude_code_sdk/` - Main package
|
||||
- `src/claude_agent_sdk/` - Main package
|
||||
- `client.py` - ClaudeSDKClient for interactive sessions
|
||||
- `query.py` - One-shot query function
|
||||
- `types.py` - Type definitions
|
||||
|
||||
24
README.md
24
README.md
@@ -1,11 +1,11 @@
|
||||
# Claude Code SDK for Python
|
||||
# Claude Agent SDK for Python
|
||||
|
||||
Python SDK for Claude Code. See the [Claude Code SDK documentation](https://docs.anthropic.com/en/docs/claude-code/sdk/sdk-python) for more information.
|
||||
Python SDK for Claude Agent. See the [Claude Agent SDK documentation](https://docs.anthropic.com/en/docs/claude-code/sdk/sdk-python) for more information.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install claude-code-sdk
|
||||
pip install claude-agent-sdk
|
||||
```
|
||||
|
||||
**Prerequisites:**
|
||||
@@ -17,7 +17,7 @@ pip install claude-code-sdk
|
||||
|
||||
```python
|
||||
import anyio
|
||||
from claude_code_sdk import query
|
||||
from claude_agent_sdk import query
|
||||
|
||||
async def main():
|
||||
async for message in query(prompt="What is 2 + 2?"):
|
||||
@@ -28,10 +28,10 @@ anyio.run(main)
|
||||
|
||||
## Basic Usage: query()
|
||||
|
||||
`query()` is an async function for querying Claude Code. It returns an `AsyncIterator` of response messages. See [src/claude_code_sdk/query.py](src/claude_code_sdk/query.py).
|
||||
`query()` is an async function for querying Claude Code. It returns an `AsyncIterator` of response messages. See [src/claude_agent_sdk/query.py](src/claude_agent_sdk/query.py).
|
||||
|
||||
```python
|
||||
from claude_code_sdk import query, ClaudeAgentOptions, AssistantMessage, TextBlock
|
||||
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, TextBlock
|
||||
|
||||
# Simple query
|
||||
async for message in query(prompt="Hello Claude"):
|
||||
@@ -79,7 +79,7 @@ options = ClaudeAgentOptions(
|
||||
## ClaudeSDKClient
|
||||
|
||||
`ClaudeSDKClient` supports bidirectional, interactive conversations with Claude
|
||||
Code. See [src/claude_code_sdk/client.py](src/claude_code_sdk/client.py).
|
||||
Code. See [src/claude_agent_sdk/client.py](src/claude_agent_sdk/client.py).
|
||||
|
||||
Unlike `query()`, `ClaudeSDKClient` additionally enables **custom tools** and **hooks**, both of which can be defined as Python functions.
|
||||
|
||||
@@ -94,7 +94,7 @@ For an end-to-end example, see [MCP Calculator](examples/mcp_calculator.py).
|
||||
#### Creating a Simple Tool
|
||||
|
||||
```python
|
||||
from claude_code_sdk import tool, create_sdk_mcp_server, ClaudeAgentOptions, ClaudeSDKClient
|
||||
from claude_agent_sdk import tool, create_sdk_mcp_server, ClaudeAgentOptions, ClaudeSDKClient
|
||||
|
||||
# Define a tool using the @tool decorator
|
||||
@tool("greet", "Greet a user", {"name": str})
|
||||
@@ -186,7 +186,7 @@ For more examples, see examples/hooks.py.
|
||||
#### Example
|
||||
|
||||
```python
|
||||
from claude_code_sdk import ClaudeAgentOptions, ClaudeSDKClient, HookMatcher
|
||||
from claude_agent_sdk import ClaudeAgentOptions, ClaudeSDKClient, HookMatcher
|
||||
|
||||
async def check_bash_command(input_data, tool_use_id, context):
|
||||
tool_name = input_data["tool_name"]
|
||||
@@ -232,7 +232,7 @@ async with ClaudeSDKClient(options=options) as client:
|
||||
|
||||
## Types
|
||||
|
||||
See [src/claude_code_sdk/types.py](src/claude_code_sdk/types.py) for complete type definitions:
|
||||
See [src/claude_agent_sdk/types.py](src/claude_agent_sdk/types.py) for complete type definitions:
|
||||
- `ClaudeAgentOptions` - Configuration options
|
||||
- `AssistantMessage`, `UserMessage`, `SystemMessage`, `ResultMessage` - Message types
|
||||
- `TextBlock`, `ToolUseBlock`, `ToolResultBlock` - Content blocks
|
||||
@@ -240,7 +240,7 @@ See [src/claude_code_sdk/types.py](src/claude_code_sdk/types.py) for complete ty
|
||||
## Error Handling
|
||||
|
||||
```python
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeSDKError, # Base error
|
||||
CLINotFoundError, # Claude Code not installed
|
||||
CLIConnectionError, # Connection issues
|
||||
@@ -259,7 +259,7 @@ except CLIJSONDecodeError as e:
|
||||
print(f"Failed to parse response: {e}")
|
||||
```
|
||||
|
||||
See [src/claude_code_sdk/_errors.py](src/claude_code_sdk/_errors.py) for all error types.
|
||||
See [src/claude_agent_sdk/_errors.py](src/claude_agent_sdk/_errors.py) for all error types.
|
||||
|
||||
## Available Tools
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AgentDefinition,
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
)
|
||||
|
||||
@@ -9,8 +9,8 @@ from typing import List, Any
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import ClaudeSDKClient
|
||||
from claude_code_sdk.types import (
|
||||
from claude_agent_sdk import ClaudeSDKClient
|
||||
from claude_agent_sdk.types import (
|
||||
ClaudeAgentOptions,
|
||||
StreamEvent,
|
||||
AssistantMessage,
|
||||
|
||||
@@ -8,7 +8,7 @@ from typing import Any
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
create_sdk_mcp_server,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import ClaudeCodeOptions, query
|
||||
from claude_agent_sdk import ClaudeAgentOptions, query
|
||||
|
||||
|
||||
@pytest.mark.e2e
|
||||
@@ -15,7 +15,7 @@ async def test_stderr_callback_captures_debug_output():
|
||||
stderr_lines.append(line)
|
||||
|
||||
# Enable debug mode to generate stderr output
|
||||
options = ClaudeCodeOptions(
|
||||
options = ClaudeAgentOptions(
|
||||
stderr=capture_stderr,
|
||||
extra_args={"debug-to-stderr": None}
|
||||
)
|
||||
@@ -39,7 +39,7 @@ async def test_stderr_callback_without_debug():
|
||||
stderr_lines.append(line)
|
||||
|
||||
# No debug mode enabled
|
||||
options = ClaudeCodeOptions(stderr=capture_stderr)
|
||||
options = ClaudeAgentOptions(stderr=capture_stderr)
|
||||
|
||||
# Run a simple query
|
||||
async for _ in query(prompt="What is 1+1?", options=options):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
PermissionResultAllow,
|
||||
|
||||
@@ -10,7 +10,7 @@ Usage:
|
||||
|
||||
import anyio
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AgentDefinition,
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
@@ -38,7 +38,7 @@ async def code_reviewer_example():
|
||||
)
|
||||
|
||||
async for message in query(
|
||||
prompt="Use the code-reviewer agent to review the code in src/claude_code_sdk/types.py",
|
||||
prompt="Use the code-reviewer agent to review the code in src/claude_agent_sdk/types.py",
|
||||
options=options,
|
||||
):
|
||||
if isinstance(message, AssistantMessage):
|
||||
|
||||
@@ -15,8 +15,8 @@ import logging
|
||||
import sys
|
||||
from typing import Any
|
||||
|
||||
from claude_code_sdk import ClaudeAgentOptions, ClaudeSDKClient
|
||||
from claude_code_sdk.types import (
|
||||
from claude_agent_sdk import ClaudeAgentOptions, ClaudeSDKClient
|
||||
from claude_agent_sdk.types import (
|
||||
AssistantMessage,
|
||||
HookContext,
|
||||
HookJSONOutput,
|
||||
|
||||
@@ -14,8 +14,8 @@ messages will include StreamEvent messages interspersed with regular messages.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
from claude_code_sdk import ClaudeSDKClient
|
||||
from claude_code_sdk.types import (
|
||||
from claude_agent_sdk import ClaudeSDKClient
|
||||
from claude_agent_sdk.types import (
|
||||
ClaudeAgentOptions,
|
||||
StreamEvent,
|
||||
AssistantMessage,
|
||||
|
||||
@@ -12,7 +12,7 @@ and simpler deployment.
|
||||
import asyncio
|
||||
from typing import Any
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
create_sdk_mcp_server,
|
||||
tool,
|
||||
@@ -99,7 +99,7 @@ async def power(args: dict[str, Any]) -> dict[str, Any]:
|
||||
|
||||
def display_message(msg):
|
||||
"""Display message content in a clean format."""
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ResultMessage,
|
||||
SystemMessage,
|
||||
@@ -137,7 +137,7 @@ def display_message(msg):
|
||||
|
||||
async def main():
|
||||
"""Run example calculations using the SDK MCP server with streaming client."""
|
||||
from claude_code_sdk import ClaudeSDKClient
|
||||
from claude_agent_sdk import ClaudeSDKClient
|
||||
|
||||
# Create the calculator server with all tools
|
||||
calculator = create_sdk_mcp_server(
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import anyio
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
ResultMessage,
|
||||
|
||||
@@ -29,7 +29,7 @@ import asyncio
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
SystemMessage,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import asyncio
|
||||
|
||||
from claude_code_sdk import ClaudeCodeOptions, query
|
||||
from claude_agent_sdk import ClaudeAgentOptions, query
|
||||
|
||||
|
||||
async def main():
|
||||
@@ -19,7 +19,7 @@ async def main():
|
||||
print(f"Error detected: {message}")
|
||||
|
||||
# Create options with stderr callback and enable debug mode
|
||||
options = ClaudeCodeOptions(
|
||||
options = ClaudeAgentOptions(
|
||||
stderr=stderr_callback,
|
||||
extra_args={"debug-to-stderr": None} # Enable debug output
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ import asyncio
|
||||
import contextlib
|
||||
import sys
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
|
||||
@@ -14,7 +14,7 @@ bash commands, edit files, search the web, fetch web content) to accomplish.
|
||||
# BASIC STREAMING
|
||||
# ============================================================================
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, ResultMessage, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, ResultMessage, TextBlock
|
||||
|
||||
async with ClaudeSDKClient() as client:
|
||||
print("User: What is 2+2?")
|
||||
@@ -33,7 +33,7 @@ async with ClaudeSDKClient() as client:
|
||||
|
||||
import asyncio
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
|
||||
async with ClaudeSDKClient() as client:
|
||||
async def send_and_receive(prompt):
|
||||
@@ -54,7 +54,7 @@ async with ClaudeSDKClient() as client:
|
||||
# PERSISTENT CLIENT FOR MULTIPLE QUESTIONS
|
||||
# ============================================================================
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
|
||||
# Create client
|
||||
client = ClaudeSDKClient()
|
||||
@@ -89,7 +89,7 @@ await client.disconnect()
|
||||
# IMPORTANT: Interrupts require active message consumption. You must be
|
||||
# consuming messages from the client for the interrupt to be processed.
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
|
||||
async with ClaudeSDKClient() as client:
|
||||
print("\n--- Sending initial message ---\n")
|
||||
@@ -141,7 +141,7 @@ async with ClaudeSDKClient() as client:
|
||||
# ERROR HANDLING PATTERN
|
||||
# ============================================================================
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
|
||||
try:
|
||||
async with ClaudeSDKClient() as client:
|
||||
@@ -168,7 +168,7 @@ except Exception as e:
|
||||
# SENDING ASYNC ITERABLE OF MESSAGES
|
||||
# ============================================================================
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
|
||||
|
||||
async def message_generator():
|
||||
@@ -210,7 +210,7 @@ async with ClaudeSDKClient() as client:
|
||||
# COLLECTING ALL MESSAGES INTO A LIST
|
||||
# ============================================================================
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeSDKClient, TextBlock
|
||||
|
||||
async with ClaudeSDKClient() as client:
|
||||
print("User: What are the primary colors?")
|
||||
|
||||
@@ -9,7 +9,7 @@ Claude's responses.
|
||||
|
||||
import trio
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import anyio
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
TextBlock,
|
||||
|
||||
@@ -8,7 +8,7 @@ which tools Claude can use and modify their inputs.
|
||||
import asyncio
|
||||
import json
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
|
||||
@@ -3,7 +3,7 @@ requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "claude-code-sdk"
|
||||
name = "claude-agent-sdk"
|
||||
version = "0.0.23"
|
||||
description = "Python SDK for Claude Code"
|
||||
readme = "README.md"
|
||||
@@ -41,12 +41,12 @@ dev = [
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/anthropics/claude-code-sdk-python"
|
||||
Homepage = "https://github.com/anthropics/claude-agent-sdk-python"
|
||||
Documentation = "https://docs.anthropic.com/en/docs/claude-code/sdk"
|
||||
Issues = "https://github.com/anthropics/claude-code-sdk-python/issues"
|
||||
Issues = "https://github.com/anthropics/claude-agent-sdk-python/issues"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["src/claude_code_sdk"]
|
||||
packages = ["src/claude_agent_sdk"]
|
||||
|
||||
[tool.hatch.build.targets.sdist]
|
||||
include = [
|
||||
@@ -105,4 +105,4 @@ ignore = [
|
||||
]
|
||||
|
||||
[tool.ruff.lint.isort]
|
||||
known-first-party = ["claude_code_sdk"]
|
||||
known-first-party = ["claude_agent_sdk"]
|
||||
@@ -25,7 +25,7 @@ def update_version(new_version: str) -> None:
|
||||
print(f"Updated pyproject.toml to version {new_version}")
|
||||
|
||||
# Update _version.py
|
||||
version_path = Path("src/claude_code_sdk/_version.py")
|
||||
version_path = Path("src/claude_agent_sdk/_version.py")
|
||||
content = version_path.read_text()
|
||||
|
||||
# Only update __version__ assignment
|
||||
|
||||
3
src/claude_agent_sdk/_version.py
Normal file
3
src/claude_agent_sdk/_version.py
Normal file
@@ -0,0 +1,3 @@
|
||||
"""Version information for claude-agent-sdk."""
|
||||
|
||||
__version__ = "0.0.23"
|
||||
@@ -98,7 +98,7 @@ async def query(
|
||||
|
||||
Example - With custom transport:
|
||||
```python
|
||||
from claude_code_sdk import query, Transport
|
||||
from claude_agent_sdk import query, Transport
|
||||
|
||||
class MyCustomTransport(Transport):
|
||||
# Implement custom transport logic
|
||||
@@ -1,3 +0,0 @@
|
||||
"""Version information for claude-code-sdk."""
|
||||
|
||||
__version__ = "0.0.23"
|
||||
@@ -4,8 +4,8 @@ from unittest.mock import AsyncMock, Mock, patch
|
||||
|
||||
import anyio
|
||||
|
||||
from claude_code_sdk import AssistantMessage, ClaudeAgentOptions, query
|
||||
from claude_code_sdk.types import TextBlock
|
||||
from claude_agent_sdk import AssistantMessage, ClaudeAgentOptions, query
|
||||
from claude_agent_sdk.types import TextBlock
|
||||
|
||||
|
||||
class TestQueryFunction:
|
||||
@@ -16,7 +16,7 @@ class TestQueryFunction:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.client.InternalClient.process_query"
|
||||
"claude_agent_sdk._internal.client.InternalClient.process_query"
|
||||
) as mock_process:
|
||||
# Mock the async generator
|
||||
async def mock_generator():
|
||||
@@ -41,7 +41,7 @@ class TestQueryFunction:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.client.InternalClient.process_query"
|
||||
"claude_agent_sdk._internal.client.InternalClient.process_query"
|
||||
) as mock_process:
|
||||
|
||||
async def mock_generator():
|
||||
@@ -76,7 +76,7 @@ class TestQueryFunction:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.client.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.client.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = AsyncMock()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""Tests for Claude SDK error handling."""
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeSDKError,
|
||||
CLIConnectionError,
|
||||
CLIJSONDecodeError,
|
||||
|
||||
@@ -8,14 +8,14 @@ from unittest.mock import AsyncMock, Mock, patch
|
||||
import anyio
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
CLINotFoundError,
|
||||
ResultMessage,
|
||||
query,
|
||||
)
|
||||
from claude_code_sdk.types import ToolUseBlock
|
||||
from claude_agent_sdk.types import ToolUseBlock
|
||||
|
||||
|
||||
class TestIntegration:
|
||||
@@ -26,7 +26,7 @@ class TestIntegration:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.client.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.client.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = AsyncMock()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -84,7 +84,7 @@ class TestIntegration:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.client.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.client.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = AsyncMock()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -170,7 +170,7 @@ class TestIntegration:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.client.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.client.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = AsyncMock()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk._errors import MessageParseError
|
||||
from claude_code_sdk._internal.message_parser import parse_message
|
||||
from claude_code_sdk.types import (
|
||||
from claude_agent_sdk._errors import MessageParseError
|
||||
from claude_agent_sdk._internal.message_parser import parse_message
|
||||
from claude_agent_sdk.types import (
|
||||
AssistantMessage,
|
||||
ResultMessage,
|
||||
SystemMessage,
|
||||
|
||||
@@ -8,7 +8,7 @@ from typing import Any
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
create_sdk_mcp_server,
|
||||
tool,
|
||||
|
||||
@@ -10,7 +10,7 @@ from unittest.mock import AsyncMock, Mock, patch
|
||||
import anyio
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
ClaudeSDKClient,
|
||||
@@ -20,7 +20,7 @@ from claude_code_sdk import (
|
||||
UserMessage,
|
||||
query,
|
||||
)
|
||||
from claude_code_sdk._internal.transport.subprocess_cli import SubprocessCLITransport
|
||||
from claude_agent_sdk._internal.transport.subprocess_cli import SubprocessCLITransport
|
||||
|
||||
|
||||
def create_mock_transport(with_init_response=True):
|
||||
@@ -115,7 +115,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -135,7 +135,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -159,7 +159,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -178,7 +178,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -206,7 +206,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -240,7 +240,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -279,7 +279,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -348,7 +348,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -430,7 +430,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -478,7 +478,7 @@ class TestClaudeSDKClientStreaming:
|
||||
)
|
||||
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -497,7 +497,7 @@ class TestClaudeSDKClientStreaming:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -699,7 +699,7 @@ class TestClaudeSDKClientEdgeCases:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
# Create a new mock transport for each call
|
||||
mock_transport_class.side_effect = [
|
||||
@@ -732,7 +732,7 @@ class TestClaudeSDKClientEdgeCases:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
@@ -751,7 +751,7 @@ class TestClaudeSDKClientEdgeCases:
|
||||
|
||||
async def _test():
|
||||
with patch(
|
||||
"claude_code_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
"claude_agent_sdk._internal.transport.subprocess_cli.SubprocessCLITransport"
|
||||
) as mock_transport_class:
|
||||
mock_transport = create_mock_transport()
|
||||
mock_transport_class.return_value = mock_transport
|
||||
|
||||
@@ -8,12 +8,12 @@ from unittest.mock import AsyncMock, MagicMock
|
||||
import anyio
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk._errors import CLIJSONDecodeError
|
||||
from claude_code_sdk._internal.transport.subprocess_cli import (
|
||||
from claude_agent_sdk._errors import CLIJSONDecodeError
|
||||
from claude_agent_sdk._internal.transport.subprocess_cli import (
|
||||
_MAX_BUFFER_SIZE,
|
||||
SubprocessCLITransport,
|
||||
)
|
||||
from claude_code_sdk.types import ClaudeAgentOptions
|
||||
from claude_agent_sdk.types import ClaudeAgentOptions
|
||||
|
||||
|
||||
class MockTextReceiveStream:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
ClaudeAgentOptions,
|
||||
HookContext,
|
||||
HookMatcher,
|
||||
@@ -10,8 +10,8 @@ from claude_code_sdk import (
|
||||
PermissionResultDeny,
|
||||
ToolPermissionContext,
|
||||
)
|
||||
from claude_code_sdk._internal.query import Query
|
||||
from claude_code_sdk._internal.transport import Transport
|
||||
from claude_agent_sdk._internal.query import Query
|
||||
from claude_agent_sdk._internal.transport import Transport
|
||||
|
||||
|
||||
class MockTransport(Transport):
|
||||
|
||||
@@ -7,8 +7,8 @@ from unittest.mock import AsyncMock, MagicMock, patch
|
||||
import anyio
|
||||
import pytest
|
||||
|
||||
from claude_code_sdk._internal.transport.subprocess_cli import SubprocessCLITransport
|
||||
from claude_code_sdk.types import ClaudeAgentOptions
|
||||
from claude_agent_sdk._internal.transport.subprocess_cli import SubprocessCLITransport
|
||||
from claude_agent_sdk.types import ClaudeAgentOptions
|
||||
|
||||
|
||||
class TestSubprocessCLITransport:
|
||||
@@ -16,7 +16,7 @@ class TestSubprocessCLITransport:
|
||||
|
||||
def test_find_cli_not_found(self):
|
||||
"""Test CLI not found error."""
|
||||
from claude_code_sdk._errors import CLINotFoundError
|
||||
from claude_agent_sdk._errors import CLINotFoundError
|
||||
|
||||
with (
|
||||
patch("shutil.which", return_value=None),
|
||||
@@ -207,7 +207,7 @@ class TestSubprocessCLITransport:
|
||||
|
||||
def test_connect_with_nonexistent_cwd(self):
|
||||
"""Test that connect raises CLIConnectionError when cwd doesn't exist."""
|
||||
from claude_code_sdk._errors import CLIConnectionError
|
||||
from claude_agent_sdk._errors import CLIConnectionError
|
||||
|
||||
async def _test():
|
||||
transport = SubprocessCLITransport(
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
"""Tests for Claude SDK type definitions."""
|
||||
|
||||
from claude_code_sdk import (
|
||||
from claude_agent_sdk import (
|
||||
AssistantMessage,
|
||||
ClaudeAgentOptions,
|
||||
ResultMessage,
|
||||
)
|
||||
from claude_code_sdk.types import (
|
||||
from claude_agent_sdk.types import (
|
||||
TextBlock,
|
||||
ThinkingBlock,
|
||||
ToolResultBlock,
|
||||
|
||||
Reference in New Issue
Block a user